2015-09-21 103 views
0

這看起來很瑣碎,但它根本不適用於我。我正嘗試從我的c#控制檯應用程序中調用soap web service。該應用程序是爲.NET 4.5構建的。下面是我所做的:C#從控制檯應用程序調用SOAP webservice

  • 新增通過將其指向WSDL服務參考項目在Visual Studio 2013。它發現服務,它的運作良好。
  • 嘗試這樣做,以創建服務的實例如下:
  ServiceReference1 s = new ServiceReference1(); 

我收到以下錯誤代碼:

Project1.ServiceReference1 is a 'namespace' but is used like a 'type' 

任何想法?我已經搜索了一段時間,並沒有遇到與真正的解決方案相同的問題的人。我會提供更多所需的信息。

+0

如果類名稱爲ServiceRefrence1,並且您調用了實際參考ServiceRefrence1,則其ServiceReference1.ServiceReference1 –

回答

0

當您創建服務引用時,Visual Studio 2013將生成一個可用於透明地調用服務的代理類。默認的代理名稱空​​間是your_project_name.ServiceReference1。該類型是您的服務的名稱。

對於示例服務http://localhost/YourService.svc。 您從控制檯項目ConsoleApp生成服務參考ServiceReference1。生成的文件具有名稱空間ConsoleApp.ServiceReference1。該類型是YourService

var service = new ServiceReference1.YourService(); 

將返回由Visual Studio生成的代理實例。然後您將能夠調用任何服務方法。

+0

好吧,看起來是我的問題。我不完全知道服務名稱(在您的示例中,您的服務)。智能感知也不是建議它。你知道代理類是否會包含所需的信息? – user1791865

+0

您應該可以將光標放在命名空間上並按F12(轉到定義)。如果這不起作用,那麼'<項目文件目錄> \ Service References \ ServiceReference1 \ Reference.cs'應該有代理類定義。 – mkozicki

0

如果您已經將項目的服務引用添加到項目中,您將看到該參考。在這種情況下,您保留了默認名稱'ServiceReference1'。

現在你想調用Web服務的方法,爲此你必須實例化一個SOAPClient。

ServiceReference1.YourWebserviceNameSoapClient client = new ServiceReference1.YourWebserviceNameSoapClient(); 
    client.HelloWorld(); // call of webmethod 

現在您訪問'client'對象下的webmethods。