【问题标题】:How to generate a WCF Client from the WSDL only for certain endpoints?如何仅针对某些端点从 WSDL 生成 WCF 客户端?
【发布时间】:2021-02-10 18:23:19
【问题描述】:

我有一个大型企业 Web 服务的 WSDL,它包括几个端点,我只打算使用其中一个。

我尝试通过向项目添加服务引用来在 Visual Studio 中生成服务客户端。问题是由于服务中可用的端点数量众多,Reference.cs 中生成的客户端代码最终有超过 1,400,000 行,Visual Studio 似乎很难处理它(IntelliSense 经常挂起,有时整个 VS 崩溃),我想构建时间也会因此而更长。

在数百个端点中,我只会使用一个,其余的都不需要。
有没有办法仅使用 Visual Studio 的服务参考 GUI 或 svcutil 从 WSDL 生成客户端代码?或者如果没有,是否有其他直接的方法可以做到这一点?

【问题讨论】:

  • 您好,问题解决了吗?如果您认为我的回复对您有帮助,您可以将其标记为答案。
  • 到目前为止,我能找到的唯一解决方案是手动编辑 WSDL,并删除我不需要的所有端点和数据模型。这有点麻烦,但它工作正常。

标签: c# visual-studio web-services wcf soap


【解决方案1】:

我没有找到从 WSDL 文件为某个端点生成客户端的任何方法。但是你可以通过通道工厂单独调用一个端点的服务。这里是demo:

EndpointAddress address = new EndpointAddress("http://localhost:8000/GettingStarted/CalculatorService1111");

            BasicHttpBinding binding =new BasicHttpBinding();

            ChannelFactory<ICalculator> factory = new

                    ChannelFactory<ICalculator>(binding, address);

            ICalculator chanel = factory.CreateChannel();

         

您需要调用该端点并传入该端点的地址,定义相应的绑定,然后声明通道工厂。所以你可以调用服务中的方法。 通过使用通道工厂,您可以调用服务的任何端点。

【讨论】:

  • 对,但是ICalculator 的代码从何而来?那部分代码是用 svcutil 还是 VS 生成的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2023-03-10
  • 2012-10-15
  • 2021-02-26
  • 1970-01-01
  • 2012-06-14
相关资源
最近更新 更多