0

ASP MVC プロジェクトで Visual Studio によって生成されたクラスを使用して Web サービスを呼び出そうとしています。これが私のコードです。

var serviceClient = new UserSoapClient("UserSoap");

var isValid = serviceClient.CheckEmail(email);
ViewBag.ServiceOutput = isValid? "Email is valid" : "Email is not valid";
return View();

ただし、メッセージがタイムアウトしており、SOAP UI で同じサービスを実行しようとしたところ、それが唯一の違いだったため、SoapClient の要求ヘッダーが User-Agent プロパティを送信していないことが問題のようです。ドキュメントを見ているので、ユーザー エージェントを設定する方法はありますか?

4

1 に答える 1

0

SoapClientでサービスを利用しようとしているときに、同様の問題に直面しました。ブラウザー経由でサービスから応答を取得できましたが、プロジェクト サービス内でコードを実行すると、リモート サーバーがエラーを返しました: (502) Bad Gatewayでプロトコル例外が返されました。メッセージ。

数時間のトレースの後、例外がユーザーエージェント定義によって引き起こされたことに気付きました。ユーザー エージェントを SOAP リクエスト ヘッダーに追加しようとしましたが、方法がありません。Service Reference として登録された SOAP リクエストに user-agent を追加することはできません。ただし、Web Service Reference として登録されたリクエストに user-agent ヘッダーを定義することは可能です。

私の解決策は何ですか:

  1. プロジェクトからサービス参照を削除します
  2. Add Service Reference WindowのAdvancedメニューからWeb Referenceと同じ参照を追加
  3. 新しいオブジェクトを作成し、以下のように UserAgent プロパティを定義します。

    var svc = new ServiceReference.QueryService();
    svc.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36";
    
于 2014-02-12T08:27:00.160 に答える