私のアプリケーションでは、コードを使用して、各投稿の間に 2 秒間隔で URL を使用してコンテンツを Web プロキシに送信しています。以下のコードで投稿するメッセージは静的文字列として指定されていますが、元のアプリケーション コードでは動的になります。
for (ic = 0; ic < 30; ic++)
{
using(HttpClient httpClient = new HttpClient())
{
Encoder encoder = new Encoder(); //This is a class which we created
AuthorizationHeaders authorizationHeaders = encoder.getAuthorization(PARTNER_ID, PARTNER_KEY, URL, "POST", "application/xml");
httpClient.DefaultHeaders.Add("Accept", "*/*");
httpClient.DefaultHeaders.Add("Authorization", authorizationHeaders.getAuthorizationHeader());
httpClient.DefaultHeaders.Add("Expires", authorizationHeaders.getExpiresHeader());
httpClient.DefaultHeaders.Add("origPartnerId", "MyWebSite");
httpClient.DefaultHeaders.Add("appId", "440");
httpClient.DefaultHeaders.Add("Content-Type", "application/xml");
string inputUrl = ConfigurationManager.AppSettings["url"];
String detailRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Message><Details><Name>Bob</Name><Age>45</Age></Details></Message>";
var content = HttpContent.Create(detailRequest, Encoding.UTF8, "application/xml");
response = httpClient.Post(inputUrl, content).EnsureStatusIsSuccessful();
Thread.Sleep(2000);
}
}
しかし、プロキシに連絡すると、以下の例外が発生します。メッセージはしばらく経ちますが、最終的にはこの例外が発生します。
GetResponse タイムアウト ---> System.TimeoutException: GetResponse タイムアウト ---> System.Net.WebException ---> System.Net.WebException: Microsoft の System.Net.HttpWebRequest.GetResponse() で操作がタイムアウトしました.Http.HttpWebRequestTransportStage.HttpTransportAsyncResult.PopulateWebResponseSync(WebRequest request, IAsyncResult result) at Microsoft.Http.HttpWebRequestTransportStage.HttpTransportAsyncResult.PopulateWebResponse(HttpTransportAsyncResult self, IAsyncResult result, Func`3 getResponse) --- 内部例外スタック トレースの終了 --- - -- 内部例外スタック トレースの終了 --- Microsoft.Http.AsyncResult.End[TAsyncResult](IAsyncResult 結果、Boolean throwException) で Microsoft.Http.HttpWebRequestTransportStage.EndProcessRequestAndTryGetResponse(IAsyncResult 結果、HttpResponseMessage&)Response, Object& state) at Microsoft.Http.HttpWebRequestTransportStage.ProcessRequestAndTryGetResponse(HttpRequestMessage request, HttpResponseMessage& response, Object& state) at Microsoft.Http.HttpStageProcessingAsyncResult.NextRequest(HttpStageProcessingAsyncResult self) --- 内部例外スタック トレースの終了 --- Microsoft. Http.HttpStageProcessingAsyncResult.Complete(HttpStage ステージ、例外 e) で Microsoft.Http.HttpStageProcessingAsyncResult.NextRequest(HttpStageProcessingAsyncResult 自身) で Microsoft.Http.HttpClient.Send(HttpRequestMessage リクエスト) で Microsoft.Http.HttpClient.Send(HttpMethod メソッド、Uri uri 、RequestHeaders ヘッダー、HttpContent コンテンツ) を Microsoft.Http.HttpMethodExtensions.Method(HttpClient クライアント、HttpMethod メソッド、Uri uri、HttpContent 本体) で Microsoft.Http.HttpMethodExtensions.Method(HttpClient クライアント、HttpMethod メソッド、文字列 uri、HttpContent 本体)
しかし、このプロキシは別のプロキシへのリダイレクトにすぎません。だから私もそれを直接試しました。そこでは、これを 2 ~ 3 回正常に実行できましたが、その後別の例外が生成されました。もう一度やり直しましたが、今回は最初の試行自体に例外がありました。しばらく待ってから再試行しましたが、驚くべきことに、2〜3回は通過し、再び例外が発生しました. 今回取得している例外は異なり、これは...
Microsoft.Http.HttpStageProcessingException ---> System.Net.WebException ---> System.Net.WebException: 基になる接続が閉じられました: 接続が予期せず閉じられました。System.Net.HttpWebRequest.GetResponse() で Microsoft.Http.HttpWebRequestTransportStage.HttpTransportAsyncResult.PopulateWebResponseSync(WebRequest 要求、IAsyncResult 結果) で Microsoft.Http.HttpWebRequestTransportStage.HttpTransportAsyncResult.PopulateWebResponse(HttpTransportAsyncResult 自己、IAsyncResult 結果、Func3 getResponse) --- End of inner exception stack trace --- at Microsoft.Http.AsyncResult.End[TAsyncResult](IAsyncResult result, Boolean throwException) at Microsoft.Http.AsyncResult.End[TAsyncResult](IAsyncResult result) at Microsoft.Http.AsyncResult
1. Microsoft.Http.HttpWebRequestTransportStage.EndProcessRequestAndTryGetResponse (IAsyncResult 結果、HttpResponseMessage& 応答、Object& 状態) での End (IAsyncResult 結果) Microsoft.Http.HttpWebRequestTransportStage.ProcessRequestAndTryGetResponse(HttpRequestMessage 要求、HttpResponseMessage& 応答、Object& 状態) で Microsoft.HttpStageProcessingAsyncResult。 NextRequest(HttpStageProcessingAsyncResult self) --- 内部例外スタック トレースの終了 --- Microsoft.Http.HttpStageProcessingAsyncResult.Complete(HttpStage ステージ、例外 e) で Microsoft.Http.HttpStageProcessingAsyncResult.NextRequest(HttpStageProcessingAsyncResult self) で Microsoft.Http.HttpStageProcessingAsyncResult ..ctor(HttpStageProcessingAsyncState 状態、AsyncCallback コールバック、オブジェクト ユーザー) Microsoft.Http.HttpClient で。Send(HttpRequestMessage リクエスト) at Microsoft.Http.HttpClient.Send(HttpMethod メソッド、Uri uri、RequestHeaders ヘッダー、HttpContent コンテンツ) at Microsoft.Http.HttpClient.Send(HttpMethod メソッド、Uri uri、HttpContent コンテンツ) at Microsoft.Http.HttpMethodExtensions .Method(HttpClient クライアント、HttpMethod メソッド、Uri uri、HttpContent 本体) Microsoft.Http.HttpMethodExtensions.Method(HttpClient クライアント、HttpMethod メソッド、文字列 uri、HttpContent 本体) で Microsoft.Http.HttpMethodExtensions.Post(HttpClient クライアント、文字列 uri) 、HttpContent 本体)Microsoft.Http.HttpMethodExtensions.Post (HttpClient クライアント、文字列 uri、HttpContent 本体) の Http.HttpMethodExtensions.Method (HttpClient クライアント、HttpMethod メソッド、文字列 uri、HttpContent 本体)Microsoft.Http.HttpMethodExtensions.Post (HttpClient クライアント、文字列 uri、HttpContent 本体) の Http.HttpMethodExtensions.Method (HttpClient クライアント、HttpMethod メソッド、文字列 uri、HttpContent 本体)
私は過去数日間この問題に取り組んでおり、いくつかの記事やスタックオーバーフローの質問も読んだことがありますが、何も役に立ちませんでした。前もって感謝します...