2008-09-27 43 views
0

我的项目中有许多共享类型的Web服务。使用WSDL.exe生成Web服务代理时默认为不同的URL

为了简单起见,我将演示两个Web服务。

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

当我产生了这两个服务我使用代理:

WSDL/sharetypes http://MyServer/WebService1.asmxhttp://MyServer/WebService2.asmx /appsettingurlkey:WebServiceUrl /命名空间:myNameSpace对象/出:MYPROXY。 cs

问题是,代理文件中的每个Web服务 的appsettingurlkey都是相同的。我希望能够指定多个 appsettingurlkey参数。这是如何完成的?由于/ sharetypes参数变得可用,因此我会提供 ,应该有一个 解决方案,用于指定专门针对每个标识的 Web Service的appsettingurlkey。

如果这对于wsdl.exe是不可能的,你会建议我做什么?我宁愿不更新wsdl.exe输出的生成代码,也不想通过我的整个应用程序传递到Url中的每个Web服务实例。

+0

这是没有答案,所以在注释:你为什么不使用svcutil.exe的生成WCF客户端代码,而不是? – 2008-09-27 05:24:44

回答

3

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

+1

啊,我甚至没有注意到生成的类是部分的。棒极了。感谢您指出了这一点! – 2008-09-29 14:32:51

0

啊,而不是用一个重载的构造函数传递在URL创建另一个部分类,增加下列参数的Wsdl.exe用能解决我的问题......

WSDL/sharetypes http://MyServer/WebService1.asmxhttp://MyServer/WebService2.asmx/appsettingurlkey:WebServiceUrl /命名空间:myNameSpace对象/out:MyProxy.cs /appsettingurlkey:BaseSoapUrl/appsettingbaseurl:http://MyServer/

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

非常感谢Rick Kierner指引我朝着正确的方向前进。

相关问题