0

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

我尝试将我的肥皂客户端对象上的“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 调用端点的修复或不同方法?

4

1 回答 1

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。

于 2009-06-24T14:30:06.660 回答