2009-06-23 103 views
0

我有一個ASP.NET網頁,它具有對WSDL的Web引用。如果我調用與此WSDL相關的方法(方法存在於另一臺服務器上),則一切正常。但是,我希望能夠動態更改WSDL指向的端點地址。原因是我們爲不同的小組託管了相同的一組Web服務,並且我們希望跟蹤誰在使用Web服務。所以,每個集合都有自己的URL。.NET Web服務客戶端 - 客戶端發現響應內容類型爲'text/plain',但預期'text/xml'

我試圖改變我的SOAP客戶端對象上的「URL」屬性設置爲不同的端點,但是當我做,方法返回此錯誤:

客戶發現「text/plain的」響應內容類型,但預計'文字/ xml'

我在想Url屬性混淆了代理類,認爲我現在正在使用REST Web服務?

下面是我的一些代碼:


mySoapNamespace.mySoapClient soapClient = new mySoapNamespace.mySoapClient(); 

//next I try to change the endpoint URL of the WSDL, misguided? ... 
soapClient.Url = "http://a_different_url/my_soap_server.wsdl"; 
string result = soapClient.myTestMethod(); 
Response.Write(result); 

而這正是我得到的錯誤。有沒有人知道修復或不同的方式來動態改變SOAP調用的端點?

回答

1

好吧!我知道我做錯了什麼。當我更改我的Web引用的Url屬性時,我需要指定代碼端點(WSDL的wsdl:port部分中的soap:address)。我正在指定WSDL本身:

soapClient.Url =「http://a_different_url/my_soap_server.wsdl」;

......當真的,我應該引用它後面的PHP腳本。

soapClient.Url =「http://a_different_url/my_soap_server.php」;

我可以清楚地看到代理類通過查看web.config文件來設置我的Url(當我導入WSDL時)。它有一個appSettings部分列出了URL。我注意到它指向的是代碼文件,而不是遠程服務器上的WSDL。