L'impostazione predefinita di URL diversi durante la generazione del proxy del servizio Web con WSDL.exe

StackOverflow https://stackoverflow.com/questions/143019

  •  02-07-2019
  •  | 
  •  

Domanda

Ho numerosi servizi Web nel mio progetto che condividono tipi.

Per semplicità lo dimostrerò con due servizi Web.

WebService1 all'indirizzo http: //MyServer/WebService.asmx webService2 all'indirizzo http: //MyServer/WebService.asmx

Quando generi il proxy per questi due servizi, utilizzo:

wsdl / sharetypes http: //MyServer/WebService1.asmx http: //MyServer/WebService2.asmx / appsettingurlkey: WebServiceUrl / namespace: MyNamespace /out:MyProxy.cs

Il problema è che la chiave appsettingurl è la stessa per ciascun servizio Web nel file proxy. Voglio essere in grado di specificare più parametri appsettingurlkey. Come viene realizzato? Immagino poiché il parametro / sharetypes è diventato disponibile, dovrebbe esserci un soluzione per specificare il appsettingurlkey specificamente per ciascuno Servizio Web identificato.

Se ciò non fosse possibile con wsdl.exe, cosa mi proporrebbe di fare? Preferirei non aggiornare il codice generato che wsdl.exe genera e non voglio passare attraverso tutta la mia applicazione passando l'Url a ciascuna istanza dei servizi Web.

È stato utile?

Soluzione

Le classi proxy generate sono classi parziali, quindi la mia soluzione sarebbe quella di aggiungere il proprio costruttore in un file di codice diverso (non generato), che legge esplicitamente un'impostazione diversa per ciascun proxy.

Altri suggerimenti

A sostegno della risposta di Elia, ecco la risposta via email che gli ho dato.

Ho dovuto postarlo sul blog perché l'XML non è stato incollato bene in questa casella di testo: http://www.rickdoes.net/blog/archive/2008/09/29/wsdl-shared-types-and-configuration.aspx

Ahh, invece di creare un'altra classe parziale con un costruttore sovraccarico che passa nell'URL, i seguenti parametri aggiuntivi a wsdl.exe risolveranno il mio problema ...

wsdl / sharetypes http: //MyServer/WebService1.asmx http: //MyServer/WebService2.asmx / appsettingurlkey: WebServiceUrl / namespace: MyNamespace /out:MyProxy.cs / appsettingurlkey: BaseSoapUrl / appsetting http: // MyServer /

Se web.config ha un'impostazione dell'app BaseSoapUrl, la utilizzerà per sostituire http: // MyServer / sottostringa da MyProxy.cs. Se l'appSetting non è presente, utilizzerà semplicemente il percorso fornito in wsdl.exe (esempio: {BaseSoapUrl} /WebService1.asmx quando si utilizza l'appSetting o http: //MyServer/WebService1.asmx quando non si utilizza l'appSetting).

Un ringraziamento a Rick Kierner per avermi indicato nella giusta direzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top