【问题标题】:.NET Web Service Client - Client found response content type of 'text/plain', but expected 'text/xml'.NET Web 服务客户端 - 客户端发现响应内容类型为“text/plain”,但预期为“text/xml”
【发布时间】:2010-11-05 07:50:43
【问题描述】:

我有一个 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 调用端点的修复或不同方法?

【问题讨论】:

    标签: c# wsdl wcf-client


    【解决方案1】:

    好的!我弄清楚我做错了什么。当我更改 Web 引用的 Url 属性时,我需要指定 code 端点(即 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2011-06-17
      • 2014-04-16
      • 1970-01-01
      • 2010-12-18
      相关资源
      最近更新 更多