SOAP Web服务和C#

时间:2011-04-28 07:22:30

标签: c# web-services soap

我需要在C#中收听来自Web服务的请求,然后在C#中回复它们。那是什么方法?

4 个答案:

答案 0 :(得分:4)

我假设您已经拥有了您希望使用的Web服务。有关Web上消费Web服务的几个例子(例如:Consuming web services from a WinForms app)。

添加网络参考

首先,您需要在C#项目中添加 Web引用。在VS2005中,您可以通过右键单击项目并选择“添加Web引用”,然后提供Web服务的URL来执行此操作。在VS2008或更高版本中,described here会有一些额外的点击次数。

完成此操作后,VS将为您生成所有必需的代理类,并提供同步和异步调用的方法,您可以使用这些方法,就像对象在本地实例化一样。 / p>

查看生成的类

例如,如果您的Web服务只有一个方法(DoSomething),并且位于www.example.com/MyService.asmx(也称为“MyService”),则Visual Studio将创建一个名为“MyService”的类看起来像这样:

namespace MyNamespace // <-- this is the name you choose when you 
{                     //     added the web reference

    public class MyService : SoapHttpClientProtocol
    {
         // synchronous execution
         public void DoSomething()
         {

         }

         // async execution
         public void DoSomethingAsync()
         {

         }

         // callback event for async execution
         public event DoSomethingCompletedEventHandler DoSomethingCompleted;
     }
}

要检查生成的命名空间的内容,请在解决方案资源管理器中双击您的Web引用(它应位于名为“Web引用”的文件夹中)。这将打开对象浏览器。

同步使用生成的类

使用您的类的最简单方法是创建一个实例,并调用方法:

// create a new instance of the service
MyService service = new MyService();

// invoke the method
service.DoSomething(); // <-- this will block the thread until completed

异步使用生成的类

要使用异步版本,您可以附加事件处理程序:

// create a new instance of the service
MyService service = new MyService();

// attach the event handler
service.DoSomethingCompleted += MyEventHandler;

// invoke the method asynchronously
service.DoSomethingAsync(); // <-- this will be invoked on a background thread

答案 1 :(得分:1)

我建议看This开始。

答案 2 :(得分:1)

如果你的问题是:Web服务必须用C#编写,答案是“不”。您可以使用多种语言编写Web服务,包括Java,VB.NET甚至COBOL.NET。

如果您的问题是:Web服务必须使用与使用它们的程序相同的语言编写,只要您的Web服务与Visual Studio项目不在同一个Visual Studio项目中,答案就是“否”。客户端(一个或多个)。

答案 3 :(得分:1)

从解决方案资源管理器中选择“添加服务引用”(右键单击您的项目),然后将要使用的WebService的URL添加到Adresss栏并说“Go”。

应该从Visual Studio自动创建客户端。