0

SOAP WSDL への Web 参照を含む ASP.NET 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呼び出しのエンドポイントを動的に変更する修正または別の方法を知っている人はいますか?

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 ファイルを見ると、(WSDL をインポートするときに) プロキシ クラスが URL を設定する内容を明確に確認できます。URL をリストする appSettings セクションがあります。そして、リモート サーバー上の WSDL ではなく、コード ファイルを指していることに気付きました。

于 2009-06-24T14:30:06.660 に答える