В своем приложении я использую фрагмент кода для отправки контента на веб-прокси с URL-адресом с интервалом в 2 секунды между каждой публикацией. Сообщение для публикации в приведенном ниже коде дается как статическая строка, но будет динамической в исходном коде приложения.
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: время ожидания операции истекло в System.Net.HttpWebRequest.GetResponse ( ) в Microsoft.Http.HttpWebRequestTransportStage.HttpTransportAsyncResult.PopulateWebResponseSync (запрос WebRequest, результат IAsyncResult) в Microsoft.Http.HttpWebRequestTransportStage.HttpTransportAsyncResultResult (внутреннее) - --- Конец внутренней трассировки стека исключений --- в Microsoft.Http.AsyncResult.End [TAsyncResult] (результат IAsyncResult, Boolean throwException) в Microsoft.Http.HttpWebRequestTransportStage.EndProcessRequestAndTryGetResponse, состояние и ответ HttpessRequestResponse (IAsyncResult) в Microsoft.Http.HttpWebRequestTransportStage.ProcessRequestAndTryGetResponse (запрос HttpRequestMessage, HttpResponseM essage & response, Object & state) в Microsoft.Http.HttpStageProcessingAsyncResult.NextRequest (HttpStageProcessingAsyncResult self) --- Конец трассировки стека внутренних исключений --- в Microsoft.Http.HttpStageProcessingAsyncResult.Complete (HttpStage) на этапе Microsoft.HttpStage. HttpStageProcessingAsyncResult.NextRequest (HttpStageProcessingAsyncResult self) в Microsoft.Http.HttpClient.Send (запрос HttpRequestMessage) в Microsoft.Http.HttpClient.Send (HttpMethod method, в HttpClient.Content, UritentHttpMethod content, UritentMethod content, UritentHttpMethod метод, UritentMethod Content) client, метод HttpMethod, Uri uri, тело HttpContent) в Microsoft.Http.HttpMethodExtensions.Method (клиент HttpClient, метод HttpMethod, String 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.End (IAsyncResult результат ) при Microsoft.Http.HttpWebRequestTransportStage.EndProcessRequestAndTryGetResponse (IAsyncResult результат, HttpResponseMessage & ответ, Object & состояние) в Microsoft.Http.HttpWebRequestTransportStage.ProcessRequestAndTryGetResponse (HttpRequestMessage запрос, HttpResponseMessage & ответ, Object & состояние) в Microsoft.Http.HttpStageProcessingAsyncResult.NextRequest (HttpStageProcessingAsyncResult само) - - Конец трассировки стека внутреннего исключения --- в Microsoft.Http.HttpStageProcessingAsyncResult.Complete (стадия HttpStage, исключение e) в Microsoft.Http.HttpStageProcessingAsyncResult.NextRequest (HttpStageProcessingAsyncResult self) в Microsoft. Http. Microsoft.Http.HttpClient.Send (метод HttpMethod, Uri uri, содержимое HttpContent) в Microsoft.Http.HttpMethodExtensions.Method (клиент HttpClient, метод HttpMethod, Uri uri, тело HttpContent) в Microsoft client.Http.HttpContent, Microsoft. HttpMethod, String uri, HttpContent body) в Microsoft.Http.HttpMethodExtensions.Post (HttpClient client, String uri, HttpContent body)
Любая помощь в этом отношении будет принята с благодарностью, потому что я после этого в течение последних нескольких дней, и я также прочитал некоторые статьи и даже вопросы в stackoverflow, но мне ничего не помогло. Заранее спасибо...