De forma predeterminada a diferentes URL al generar un proxy de servicio web con WSDL.exe

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

  •  02-07-2019
  •  | 
  •  

Pregunta

Tengo numerosos servicios web en mi proyecto que comparten tipos.

Por simplicidad lo demostraré con dos servicios web.

WebService1 en http: //MyServer/WebService.asmx webService2 en http: //MyServer/WebService.asmx

Cuando genero el proxy para estos dos servicios que uso:

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

El problema es que el appsettingurlkey es el mismo para cada servicio web en el archivo proxy. Quiero poder especificar múltiples Parámetros de appsettingurlkey. ¿Cómo se logra esto? me imagino desde que el parámetro / sharetypes estuvo disponible, debería haber un Solución para especificar el appsettingurlkey específicamente para cada Servicio web identificado.

Si esto no es posible con wsdl.exe, ¿qué propondría que hiciera? Preferiría no actualizar el código generado que genera wsdl.exe y no quiero pasar por toda la aplicación pasando la URL a cada instancia de los servicios web.

¿Fue útil?

Solución

Las clases de proxy generadas son clases parciales, por lo que mi solución sería agregar su propio constructor en un archivo de código diferente (no generado), que lea explícitamente una configuración diferente para cada proxy.

Otros consejos

Para complementar la propia respuesta de Elijah, aquí está la respuesta de correo electrónico que le di.

Tuve que bloguearlo porque el XML no se pegó bien en este cuadro de texto: http://www.rickdoes.net/blog/archive/2008/09/29/wsdl-shared-types-and-configuration.aspx

Ahh, en lugar de crear otra clase parcial con un constructor sobrecargado que pasa la URL, los siguientes parámetros adicionales de wsdl.exe resolverán mi problema ...

wsdl / sharetypes http: //MyServer/WebService1.asmx http: //MyServer/WebService2.asmx / appsettingurlkey: WebServiceUrl / namespace: las / lospiezas de las partes de los cuadros de los cuadros de las cosas / MyNamespace: http: // MyServer /

Si web.config tiene una aplicación BaseSoapUrl, se usará para reemplazar el http: // MyServer / sub cadena de MyProxy.cs. Si el ajuste de la aplicación no está presente, entonces solo usará la ruta provista en el wsdl.exe (ejemplo: {BaseSoapUrl} /WebService1.asmx cuando use el ajuste de la aplicación o http: //MyServer/WebService1.asmx cuando no se utiliza la configuración de aplicaciones).

Un agradecimiento a Rick Kierner por indicarme la dirección correcta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top