Pergunta

Eu tenho vários serviços da Web no meu projeto que tipos de acções.

Para simplificar vou demonstrar com dois serviços da Web.

WebService1 em http: //MyServer/WebService.asmx WebService2 em http: //MyServer/WebService.asmx

Quando eu gerar o proxy para estes dois serviços que eu uso:

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

O problema é que o appsettingurlkey é o mesmo para cada serviço Web no arquivo proxy. Eu quero ser capaz de especificar múltipla parâmetros appsettingurlkey. Como isso é feito? Eu percebi desde os sharetypes / parâmetro se tornaram disponíveis, deve haver um solução para especificar a appsettingurlkey especificamente para cada Serviço Web identificados.

Se isto não é possível com o wsdl.exe, o que você propõe que eu faça? Prefiro não atualizar o código gerado que saídas Wsdl.exe e eu não quero passar por toda a minha aplicação passar a URL para cada instância dos serviços da Web.

Foi útil?

Solução

As classes proxy gerados são classes parciais, então minha solução seria para adicionar seu próprio construtor em um diferente arquivo de código (não-gerado), que diz explicitamente uma configuração diferente para cada proxy.

Outras dicas

Para Suplemento própria resposta de Elias, aqui está a resposta de e-mail que lhe dei.

Eu tive o blog porque o XML não colar bem nessa caixa de texto: http://www.rickdoes.net/blog/archive/2008/09/29/wsdl-shared-types-and-configuration.aspx

Ahh, em vez de criar uma outra classe parcial com um construtor sobrecarregado passando o URL, os seguintes parâmetros adicionais para o wsdl.exe vai resolver o meu problema ...

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

Se o web.config tem um BaseSoapUrl AppSetting, então ele vai usar isso para substituir o http: // MyServer / sub seqüência das MyProxy.cs. Se o AppSetting não está presente, então ele vai usar apenas o caminho fornecido na wsdl.exe (exemplo: {BaseSoapUrl} /WebService1.asmx ao usar o AppSetting ou http:. //MyServer/WebService1.asmx quando não utilizar o AppSetting)

Um agradecimento vai para Rick Kierner por me apontar na direção certa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top