.NET Web服务客户端 - 客户端发现响应内容类型为“text / plain”,但预期为“text / xml”

时间:2009-06-23 20:49:48

标签: c# wsdl wcf-client

我有一个ASP.NET网页,其中包含对SOAP WSDL的Web引用。如果我调用与此WSDL关联的方法(这些方法存在于另一台服务器上),一切正常。但是,我希望能够动态更改WSDL指向的端点地址。原因是我们为不同的组托管了同一组Web服务,我们希望跟踪谁在使用Web服务。因此,每个集合都有自己的URL。

我尝试将soap客户端对象上的“Url”属性更改为其他端点,但是当我这样做时,方法会返回此错误:

客户发现“text / plain”的响应内容类型,但预期为“text / 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 个答案:

答案 0 :(得分: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时)。它有一个列出URL的appSettings部分。我注意到它指向了代码文件,而不是远程服务器上的WSDL。