【问题标题】:Implementing a SOAP client in C# with WCF and .NET 4.0使用 WCF 和 .NET 4.0 在 C# 中实现 SOAP 客户端
【发布时间】:2011-05-12 09:36:59
【问题描述】:

我在 .NET 4.0 中开始使用 WCF 时遇到问题。这是我的情况:

我在 PHP 中创建了一个小型 SOAP 服务器。我有一个 C# 项目,我想在其中连接到此服务器并启动 SOAP 通信。

我的问题是,我不知道如何在 C# 中执行此操作。我找不到正确的 WCF 介绍。有办法做到这一点。但是我找不到合适的类和引用来添加到我的 C# 项目中。是否有任何教程如何在 C# 中实现这一点?我搜索了很多,但没有找到任何对我有帮助的东西。

我想在运行时从我的 SOAP 服务器加载 WSDL,发出 SOAP 请求,检索答案并完成。但是我可以从哪里开始呢?关于 WCF 的 MSDN 站点只会让我更加困惑。

编辑:可能不需要在运行时获取 WSDL 文件。所以不再需要了。
我使用 svcutil 创建类并将其嵌入到我的项目中。我还没有能够测试它,因为我在使用 MySQL 数据库时遇到了一些问题(它正在运行并且可以从 mysql 命令行工具或 mysqladmin 访问,但我无法使用任何其他程序连接到它......) .我会在知道它是否有效后立即报告。

编辑 2:我遵循了 Kevs 的方法,最终效果非常好。我的最后一个问题是,我在 DLL 中使用了服务类。我也需要使用 DLL 的程序中的 app.config。在我这样做之后,效果很好。

【问题讨论】:

  • 这不是您在 .NET 中通常会做的事情。通常,您会在开发时导入 WSDL,并通过添加服务引用让它生成客户端代理。为什么需要在运行时获取 WSDL?
  • 在做了更多研究之后,我认为这并不是真的必要。我想我不需要它,而且那样不容易。

标签: c# wcf web-services soap


【解决方案1】:

执行此操作的最快方法是在客户项目的“参考”下右键单击“添加服务参考”。将对话框指向 WSDL 的位置,然后单击 Go:

我使用的 URL 用于 .NET 服务引用的样式,您需要替换为 PHP SOAP 服务用来公开其 WSDL 的任何内容。

这样做会生成一个客户端代理,您可以对其进行实例化以与您的网络服务进行通信。

要访问该服务,您可以执行以下操作(尽管您的具体实现不会相同):

MyService.MyWebServiceSoapClient ws = new MyService.MyWebServiceSoapClient();
string result ws.DoThing();

特别注意代理类名的SoapClient部分,这是由代理代码生成器添加到soap服务名的名称中的。

代理生成器还将在您的web.configapp.config 文件中创建所有必要的配置。

【讨论】:

  • 虽然我同意这是使用服务的最快方式,但 OP 特别要求在运行时加载 WSDL。
  • @thorarin - 虽然这可能是真的,但他也可能认为每次您需要使用端点和可能不知道他只能生成一次代理。
  • 确实,我正在研究运行时生成。但我花更多时间在研究上,我想我会继续进口。另一个注意事项:在我的情况下,添加服务引用并没有像那样工作。我必须通过“高级”对话框并添加 Web 参考。它说 .NET 2.0 兼容。在我看来不是最佳选择。
  • @skalli - 你能发布你的 WSDL 吗? WCF 代理生成器可能不喜欢其中的某些内容?
  • @Kev:今天找到了,我忽略的 WSDL 中有一个小错误。现在我可以创建服务引用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 2021-01-11
  • 2012-05-06
  • 1970-01-01
相关资源
最近更新 更多