使用WCF和.NET 4.0在C#中实现SOAP客户端

Ska*_*lli 6 c# wcf soap web-services

我在.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.在我这样做之后,效果很好.

Kev*_*Kev 8

最快的方法是在引用下的客户端项目中右键单击"添加服务引用".将对话框指向WSDL的位置,然后单击Go:

在此输入图像描述

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

执行此操作将生成客户端代理,您可以实例化以与Web服务进行通信.

要访问该服务,您可以执行类似的操作(尽管您的具体实现方式不同):

MyService.MyWebServiceSoapClient ws = new MyService.MyWebServiceSoapClient();
string result ws.DoThing();
Run Code Online (Sandbox Code Playgroud)

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

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

  • @thorarin - 虽然这可能是真的,但他也可能认为每次你需要使用端点时动态构建soap类(有点像后期绑定的VB6/VBScript SOAP SDK样式)并且可能不知道他可以生成代理只需一次. (2认同)