2

Web サービスでメソッドを呼び出していますが、403 Forbidden WebException がスローされています...

System.Net.WebException: HTTP ステータス 403 で要求が失敗しました: 許可されていません。

このエラーをログに記録しましたが、ログ メッセージに URI を記録して、問題の原因となっている Web サービスを簡単に特定できるようにしたいと考えています。

スローされた WebException から URI を取得する簡単な方法はありますか? プロパティのリストを調べましたが、必要なものを取得できるものは何もありません。

4

3 に答える 3

0

認証が必要な Web プロキシ経由でサービスを呼び出していないことを確認してください。このエラー (またはおそらく 401) が発生し、(私が行ったように) 髪を引っ張って、障害が発生している場所を突き止めようとします。ネットワーク トレースを行って、リクエストが認証済みのアウトバウンド プロキシにヒットし、リクエストに資格情報がなく、跳ね返ったことがわかるまで、何が起こっているのかわかりませんでした。

于 2012-04-21T12:42:17.577 に答える
0

UrlSOAP クライアント プロキシ オブジェクト ( SoapHttpClientProtocoltype)のプロパティにアクセスできます。

コード内の 1 つのメソッドから 2 つの異なる Web サービスを呼び出している場合は、単に try {} キャッチを Web サービス呼び出しの周りに配置しException、問題のある Web サービスの Url プロパティを使用して適切なカスタムをスローします。

何かのようなもの:

string url = client.Url;
try
{
  client.MyWebServiceCall();
  url = client2.Url;
  client2.MyWebServiceCall2();
}
catch (Exception ex)
{
  throw new Exception("Webservice call failed. Url: "+url+", Error:"+ex.Message,ex);
}
于 2009-12-06T23:30:18.057 に答える