【问题标题】:Defaulting to different URLs when Generating Web Service Proxy with WSDL.exe使用 WSDL.exe 生成 Web 服务代理时默认使用不同的 URL
【发布时间】:2010-09-13 16:03:25
【问题描述】:

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

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

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

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

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

问题是每个Web Service的appsettingurlkey都是一样的 在代理文件中。我希望能够指定多个 appsettingurlkey 参数。这是如何实现的?我想 由于 /sharetypes 参数可用,应该有一个 专门为每个指定 appsettingurlkey 的解决方案 已识别 Web 服务。

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

【问题讨论】:

  • 没有答案,所以在评论中:你为什么不使用 svcutil.exe 来生成 WCF 客户端代码呢?

标签: c# asp.net web-services wsdl


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

啊,与其在 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,那么它将使用它来替换 MyProxy.cs 中的 http://MyServer/ 子字符串。如果 appSetting 不存在,那么它将仅使用 wsdl.exe 中提供的路径(例如:使用 appSetting 时为 {BaseSoapUrl}/WebService1.asmx 或不使用 appSetting 时为 http://MyServer/WebService1.asmx)。

感谢 Rick Kierner 为我指明了正确的方向。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 啊,我什至没有注意到生成的类是部分的。棒极了。感谢您指出这一点!
    猜你喜欢
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多