2015-09-16 178 views
0

對SOAP不太瞭解,但對於C#或PHP來說並不陌生。我在http://basic.tip2tail.co.uk/?wsdl創建了一個基本的SOAP服務。這應該公開一個方法submitSoap,它接受一個字符串參數並返回一個整數。C#SOAP客戶端導致異常

我已經測試了這個SOAP服務,通過連接一個簡單的客戶端,我用另一種語言編寫並確認它按預期工作。

但是,我不能讓我的頭在C#中圍繞這個。我添加了一個指向我的WSDL的Service Reference。它顯示爲2個服務。該方法顯示爲在BasicSOAP_PortType下公開。 WSDL Ref

我已經添加了using SOAPTest.BasicSOAP;到我的C#程序。然而,我不能解決如何編寫一個調用這個方法。我的想法是將類似於(在一個按鈕單擊事件):

BasicSOAP_PortType oSoap = new BasicSOAP_PortType(); 
int iReturn = oSoap.submitSoap("this is the string sent"); 

然而,這並不工作,並生成以下異常:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.ServiceModel.dll 

Additional information: Could not find default endpoint element that references contract 'BasicSOAP.BasicSOAP_PortType' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element. 

任何幫助表示讚賞!

馬克

+1

馬克你好,你可以發佈你的客戶的app.config請? – DotNetHitMan

+0

@DotNetHitMan'<?XML版本= 「1.0」 編碼= 「UTF-8」?> <結構> <綁定名稱= 「BasicSOAP_Binding」/> ' – tip2tail

+0

@DotNetHitMan這是我需要手動修改的東西嗎?這不應該從WSDL自動創建嗎? – tip2tail

回答

1

我得到它的工作。添加服務裁判後,我的代碼看起來是這樣的:

using (var client = new basicsoap_ref.BasicSOAP_PortTypeClient()) 
    { 
     try 
     { 
      int result = 0; 
      string resultString = client.submitSoap("<root><test>Will</test></root>"); 
      int.TryParse(resultString, out result); 
      Console.WriteLine(result); 
     } 
     catch (Exception ex) 
     { 
      Console.Write(ex.Message); 
     } 
     Console.Write("Done"); 
    } 

而且我的配置文件的服務模型部分看起來是這樣的:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="BasicSOAP_Binding" /> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://basic.tip2tail.co.uk/" 
      binding="basicHttpBinding" bindingConfiguration="BasicSOAP_Binding" 
      contract="basicsoap_ref.BasicSOAP_PortType" name="MyServicesSoap" /> 
    </client> 
</system.serviceModel> 
+0

但是,我如何獲得整數返回值? – tip2tail

+1

查看我的更新回答。它實際上返回一個字符串,你必須解析爲int。 – thewisegod

+1

您是否將此服務模型部分添加到您的配置文件中? – thewisegod

相關問題