我的项目中有很多共享类型的Web服务。

为简单起见,我将使用两个Web服务进行演示。

http://MyServer/WebService.asmx 上的WebService1 http://MyServer/WebService.asmx 上的webService2

当我为这两个服务生成代理时,我使用:

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

问题是每个Web服务的appsettingurlkey都是相同的 在代理文件中。我希望能够指定多个 appsettingurlkey参数。这是如何完成的?我想 因为/ sharetypes参数可用,所以应该有一个 用于指定appsettingurlkey的解决方案 确定了Web服务。

如果使用wsdl.exe无法做到这一点,我建议你做什么?我宁愿不更新wsdl.exe输出的生成代码,我也不想通过我的整个应用程序将Url传递给Web服务的每个实例。

有帮助吗?

解决方案

生成的代理类是部分类,因此我的解决方案是在不同的(非生成的)代码文件中添加您自己的构造函数,该文件显式地为每个代理读取不同的设置。

其他提示

为了补充以利亚自己的答案,这是我给他的电子邮件答案。

我不得不写博客,因为XML没有很好地粘贴到这个文本框中: http://www.rickdoes.net/blog/archive/2008/09/29/wsdl-shared-types-and-configuration.aspx

啊,而不是使用重载构造函数传递Url创建另一个部分类,wsdl.exe的以下附加参数将解决我的问题...

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

如果web.config有一个BaseSoapUrl appSetting,那么它将使用它替换 http:// MyServer / 来自MyProxy.cs的子字符串。如果appSetting不存在,那么它将只使用wsdl.exe中提供的路径(例如:{BaseSoapUrl} /WebService1.asmx使用appSetting或 http://MyServer/WebService1.asmx

感谢Rick Kierner指出我正确的方向。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top