2010-01-21 189 views
0

我想在我的C#客户端应用程序中调用Web服务。 我希望能够动态地绑定到这个Web服务。ASP.NET Web服务的ServiceContract类

我使用下面的代码动态调用Web服务:

class Program 
{ 
    interface IInterface 

    static void Main(string[] args) 
    { 
     BasicHttpBinding bin = new BasicHttpBinding(); 

     EndpointAddress endPoint = new EndpointAddress("http://api.wxbug.net/webservice-v1.asmx"); 

     IInterface myInterface = ChannelFactory<IInterface>.CreateChannel(bin,endPoint); 


    } 
} 

我的问题是,如何我生成的ServiceContract接口为我的Web服务?有没有任何工具可以自动生成?这是因为我的目标Web服务非常复杂,有很多暴露的方法,我不想全部用手写服务契约接口。

+0

你是指客户端的代理合同吗? – 2010-01-21 11:42:06

+0

是...要动态地从客户端调用Web服务,它需要代理合同。 – ashwnacharya 2010-01-22 03:19:44

回答

1

svcutil工具是你用来做这件事的。当您在Visual Studio中选择“添加服务引用”时,这也是幕后运行的内容。

如果您在Visual Studio中工作,那么“添加服务引用”可能会最简单,因为它应该会自动启动您的服务以获取元数据。

如果您不能或不想使用Visual Studio,您需要确保您的服务已启动并运行,然后使用svcutil.exe(如果打开.Net命令提示符,它将会在路径变量中)。如果您不想生成/覆盖客户端配置,或者您想要为代理指定特定的类,则有时需要使用svcutil。svcutil中还有一个方便的开关,它将在代理中生成通用集合而不是默认数组。

1

您可以右键点击您的项目并选择Add Service Reference;它会抓住你的Web服务WSDL并创建你的代理类。