come generare il servizio web da wsdl

Il client mi ha fornito il wsdl per generare il servizio Web. Ma quando ho usato il comando wsdl.exe ha generato la class .cs. Ho consumato quella class 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.

Sfortunatamente, non esiste una soluzione di proiettili magici per quello che stai cercando. Ecco cosa puoi fare:

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

    wsdl.exe yourFile.wsdl /l:CS /serverInterface
    Usa VB o CS per la tua lingua preferita. Questo 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 tuo file .asmx.cs in Code-View, modifica la tua class 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"; } } 

Che ne dici di utilizzare le opzioni wsdl /server o wsdl /serverinterface ? Per quanto comprendo le proprietà della riga di comando wsdl.exe, questo è quello che stai cercando.

 - ADVANCED - 

/server

 Server switch has been deprecated. Please use /serverInterface instead. Generate an abstract class for an xml web service implementation using ASP.NET based on the contracts. The default is to generate client proxy classs. 

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


AGGIORNARE:

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

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

Questo è praticamente lo stesso codice che viene generato quando aggiungi un file ASMX alla tua soluzione (nel codice dietro il file – “yourservice.asmx.cs”). Non penso che tu possa avvicinarti di più alla creazione di un file ASMX da un file WSDL.

Puoi sempre aggiungere manualmente “yourservice.asmx” – in realtà non contiene molto:

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

Non è ansible garantire che il WSDL generato automaticamente corrisponda al WSDL da cui viene creata l’interfaccia di servizio.

Nel tuo scenario, dovresti posizionare il file WSDL sul tuo sito web da qualche parte e far usare ai consumatori quell’URL. È necessario distriggersre il protocollo di Documentation in web.config in modo che “? Wsdl” non restituisca un WSDL. Vedi elemento .

Inoltre, nota il primo paragrafo di quell’articolo:

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

È ansible generare le classi proxy WS utilizzando lo strumento WSCF (Web Services Contract First) di 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.

Questo potrebbe essere molto tardi nel rispondere. Ma potrebbe essere d’aiuto a chi ha bisogno: come convertire WSDL in SVC:

  1. Supponendo che si abbia file .wsdl nella posizione “E: \” per facilitare l’accesso ulteriormente.
  2. Preparare il comando per ogni file .wsdl come: E: \ YourServiceFileName.wsdl
  3. Autorizzazioni: presupponendo 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 aprire il prompt dei comandi di Visual Studio da: C: \ Programmi (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ Tools \ Collegamenti \ VS2013 x64 Prompt dei comandi degli strumenti nativi.
  7. Esegui il 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.