创建 C# 客户端使用 SOAP 服务而不使用内置的“添加服务引用...”

Posted

技术标签:

【中文标题】创建 C# 客户端使用 SOAP 服务而不使用内置的“添加服务引用...”【英文标题】:Create C# client consumes SOAP service without using built-in 'Add Service Reference...' 【发布时间】:2013-07-30 13:25:57 【问题描述】:

我的公司通过 Https 提供 SOAP 服务。我需要编写一个使用 C# 使用该 SOAP 服务的库。我正在使用由 Visual Studio 2008 的 “添加服务引用...” 功能生成的代码,但它为我认为过分的服务公开的每个函数(其中有很多)创建了一个类。 我的问题是有另一种不使用“添加服务引用...”来编写消费者的方法吗?

【问题讨论】:

使用以上链接***.com/questions/5396671/… 【参考方案1】:

您可以通过创建 SOAP 消息并发送 Web 请求来实现 就像在这个SOAP client web request

【讨论】:

-1 仅仅因为你可以做某事,并不意味着你应该 您链接中的解决方案有点低级,因为我必须自己发送请求并解析响应。我正在寻找一种解决方案,可以涉及手动创建服务代理,但不是在那个低级别。 @JohnSaunders - 仅仅因为不应该做某事并不意味着他们不应该做。当然它会产生意想不到的,难以追踪的错误,并且肯定会导致无法管理的代码......但它仍然是一个有效的解决方案。 +1 顺便说一句【参考方案2】:

您可以使用 svcutil.exe 命令行实用程序为您的服务创建代理类。在您的项目中使用生成的配置文件添加该代理类。所有服务方法都可以通过该类使用。 下面是生成代理类的步骤。

    打开 Visual Studio 命令提示符。

    转到您要放置生成的类的特定文件夹。例如,键入“cd D:\\Services

    运行命令“svcutil.exe YourSerivceURL”

此命令将在 "D:\\Services" 文件夹中为您的服务生成类,并带有 output.config 文件。您必须从 output.config 文件中复制客户端配置部分,并在 web.config 文件中添加要引用服务的位置。

【讨论】:

我已经按照您的建议进行了尝试,但生成的代码类似于使用“添加服务参考” 这不像添加服务引用。它只是在您的项目中添加一个 API。如果您手动创建 API,即使在这种情况下,您也必须在项目中添加该类。 如果有人不知道在哪里可以找到svcutil.exe(比如我),可以看看:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools \svcutil.exe***.com/questions/4876374/…

以上是关于创建 C# 客户端使用 SOAP 服务而不使用内置的“添加服务引用...”的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中,如何为 Praxedo 业务事件附件管理器创建 SOAP 集成?

在c#中,用soap调用webservice,发送消息并取得webservice方法里返回的内容,用http 的方法

如何将 SOAP 标头附加到我的 C# 客户端?

使用 SOAP 数据包调试 Web 服务

PHP 服务器在未将对象引用设置为对象实例时出现 C# Soap 客户端错误

如何使用C#创建WebService