2010-01-21 188 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並創建你的代理類。