【问题标题】:Create WebService reference programmactically以编程方式创建 Web 服务引用
【发布时间】:2014-03-21 18:28:55
【问题描述】:

我正在使用第三方产品的一些网络服务。 所以我添加了右键单击服务引用并在 web.config 文件中生成代码。

但问题是,对于我使用该服务的每家公司,他们都有一个端点地址(并且他们有 30 多家公司)。因此,为每个公司添加一个引用(在这些 Web 服务中执行相同的方法)是很疯狂的。

所以,我想知道这是否可能以及如何使用一些 GetWebService(url) 方法来创建 WebServiceHelper 类,该方法允许我仅发送 Web 服务的 url 并创建我的服务模型。

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_ITestService" receiveTimeout="10:00:00"
      sendTimeout="10:00:00" maxReceivedMessageSize="2147483647" transferMode="Buffered"
      useDefaultWebProxy="true" />       
  </basicHttpBinding>
</bindings>
<client>      
  <endpoint address="http://xxxx.xxx"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITestService"
    contract="Test.TESTSOAP" name="BasicHttpBinding_ITestService" />
</client>

【问题讨论】:

  • 如果您创建自己的代理,您可以只传递 URL,但是我怀疑这 30 家公司中的每一个都使用完全相同的界面。如果他们这样做,只需使用您自己的代理即可。
  • @LordTakkera ,是的,他们使用相同的接口,这是第三方产品的限制,他们必须为每个公司创建一个Web服务,并且它们具有相同的方法。我从来没有创建它,你有一些创建代理的好链接吗?
  • @LordTakkera,例如,如果我使用 scvutil 自动生成的代码引用服务,它会创建合同=Company01.GENERALCONTRACT、Company02.GENERALCONTRACT,但它始终是相同的“根”合同。我需要创建一个具有相同 GENERALCONTRACT 成员的接口吗?

标签: c# web-services wcf


【解决方案1】:

我们应该能够从 WSDL 创建一个 c# 文件,就像 SVCUTIL 一样,然后在运行时使用反射来创建代理。

请仔细阅读本文并下载提供的源代码。

DynamicProxyFactory

【讨论】:

    【解决方案2】:

    您可以使用 WCF ChannelFactory 生成动态和自定义代理

    更多详情请查看how to generate dynamic wcf proxy using ChannelFactory

    【讨论】:

      猜你喜欢
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多