2009-09-08 13 views
36

cliente mi ha fornito il WSDL per generare il service.But web quando ho usato il comando wsdl.exe ha generato la classe cs fuori di esso. Ho consumato quella classe nel mio servizio web e quando ho fornito il wsdl al client non corrispondeva al loro schema. In realtà voglio che il .asmx venga generato automaticamente da wsdl in modo da poter compilare il metodo web. In modo che corrisponda esattamente al loro schema. Spero che abbia senso.come generare servizio web di WSDL

+0

In realtà ho anche provato wsdl.exe/server o/serverinterface che sta ancora generando la classe .cs. – alice7

risposta

4

ne dite di usare i wsdl /server o wsdl /serverinterface interruttori? Per quanto ho capito le proprietà della riga di comando wsdl.exe, questo è quello che stai cercando.

- ADVANCED - 

/server

D'altra parte: perché vuoi creare soluzioni tecnologiche obsolete? Perché non creare questo servizio Web come servizio WCF. Questo è il modo attuale e più moderno e molto più flessibile per farlo!

Marc


UPDATE:

Quando uso wsdl /server su un file WSDL, ottengo questo file creato:

[WebService(Namespace="http://.......")] 
public abstract partial class OneCrmServiceType : System.Web.Services.WebService 
{ 
    /// <remarks/> 
    [WebMethod] 
    public abstract void OrderCreated(......); 
} 

Questo è fondamentalmente quasi esattamente lo stesso codice che viene generato quando si aggiunge un file ASMX alla soluzione (nel codice dietro file di - "yourservice.asmx.cs"). Non penso che tu possa avvicinarti di più alla creazione di un file ASMX da un file WSDL.

si può sempre aggiungere il "yourservice.asmx" manualmente - in realtà non contiene molto:

<%@ WebService Language="C#" CodeBehind="YourService.asmx.cs" 
     Class="YourServiceNamespace.YourServiceClass" %> 
+1

NO che in realtà non sto cercando. Genererebbe la classe proxy che non voglio. Voglio generare automaticamente abc.asmx. E ho pensato a WCF, ma è diventato semplice creando un servizio web. – alice7

3

Non si può garantire che il WSDL generato automaticamente corrisponderà il WSDL da cui si crea il servizio interfaccia.

Nel vostro scenario, è necessario posizionare il file WSDL sul vostro sito web da qualche parte, e hanno i consumatori utilizzano tale URL. È necessario disattivare il protocollo Documentation nel web.config in modo che "? Wsdl" non restituisce un WSDL. Vedi <protocols> Element.

Inoltre, notare il primo comma dello stesso articolo:

Questo argomento è specifico di una tecnologia legacy. I servizi Web XML e i client del servizio Web XML devono ora essere creati utilizzando Windows Communication Foundation (WCF).

60

Non c'è una soluzione di proiettili magici per quello che stai cercando, sfortunatamente. Ecco cosa si può fare:

  • creare una classe di interfaccia di utilizzare questo comando nella finestra del prompt dei comandi di Visual Studio:

    wsdl.exe yourFile.wsdl /l:CS /serverInterface
    Usa VB o CS per la lingua di scelta.Ciò creerà un nuovo file .cs o .vb.

  • Creare un nuovo progetto di servizio Web .NET. Importa file esistente nel tuo progetto - il file che è stato creato nel passaggio precedente.

  • Nel file .asmx.cs nel Codice-View, modificare la classe in quanto tale:

 

public class MyWebService : System.Web.Services.WebService, IMyWsdlInterface 
{  
    [WebMethod] 
    public string GetSomeString() 
    { 
     //you'll have to write your own business logic 
     return "Hello SOAP World"; 
    } 
} 
+2

Inoltre è possibile inserire/uscire: "percorso \ cartella \" per inserire il codice generato in una determinata posizione. – b729sefc

+0

Grazie, enorme aiuto –

1

è possibile generare le classi WS procura utilizzando WSCF (Web Services primo contratto) strumento da thinktecture.com. Quindi in sostanza, puoi creare servizi web da wsdl. Creare l'asmx, forse no, ma è un po 'facile no? Questo strumento si integra perfettamente in VS2005-8 (nuova versione per 2010/WCF denominata WSCF-blu). L'ho usato molto e l'ho trovato sempre molto buono.

+0

Avrei notato anche questo, anche se non ho mai avuto molta fortuna con me stesso (WSCF Blue in particolare). Forse ho usato una versione anticipata o qualcosa del genere. –

1

Potrebbe essere molto tardi nel rispondere. Ma potrebbe essere utile per bisognosi: come convertire WSDL a SVC:

  1. Supponendo che si stanno avendo .wsdl file alla posizione "E: \" per la facilità di accesso ulteriormente.
  2. Preparare il comando per ogni file .wsdl come: E: \ YourServiceFileName.wsdl
  3. Autorizzazioni: Supponendo che si disponga dei diritti di amministratore per eseguire le autorizzazioni. Apri directory: C: \ Programmi (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin
  4. Fare clic con il tasto destro su amd64 => Sicurezza => Modifica => Aggiungi utente => Tutti o Utente corrente => Consenti tutte le autorizzazioni => OK.
  5. Preparare i comandi per ciascun file nell'editor di testo come: wsdl.exe E: \ YourServiceFileName.wsdl/l: CS/server.
  6. Ora apri il prompt dei comandi di Visual Studio da: C: \ Programmi (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ Tools \ Scorciatoie \ VS2013 x64 Prompt dei comandi degli strumenti nativi.
  7. Esegui comando precedente.
  8. Vai alla directory: C: \ Programmi (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ amd64, dove dovrebbe essere generato il rispettivo file .CS.

    9.Spostare il file CS generato nella posizione appropriata.

+0

questo è l'approccio più semplice e diretto dalla finestra vs cmd. –

Problemi correlati