Мы используем следующий код для вызова .NET Web API. Служба размещена на IIS с проверкой подлинности Windows. Сервисный вызов инициируется из консольного задания. (И сервис, и консоль находятся в .NET Framework 4.5 оба).
Размер сообщения _payload
велик (~ 4990 КБ). Сервису web.config уже присвоено maxRequestLenghth
большое значение. Это не терпит неудачу для маленьких запросов.
Интересно, что каждый раз для запроса не требуется 5 минут. 401 для проверки подлинности NTLM присутствует в журналах IIS, но ничего после этого.
Я полагаю, это проблема тайм-аута, пожалуйста, помогите
Код:
public async Task<ServiceResponse> InvokeService()
{
string clientBaseAddress = ConfigurationManager.AppSettings["ServiceBaseAddress"];
string requestUri = ConfigurationManager.AppSettings["ServiceRequestUri"];
HttpClient client;
ServiceResponse serviceResponse = null;
HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = true
};
client = new HttpClient(handler);
using (client)
{
try
{
client.BaseAddress = new Uri(clientBaseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.Timeout = TimeSpan.FromHours(1);
HttpResponseMessage response = await client.PostAsJsonAsync(requestUri, _payLoad);
}
catch(Exception ex)
{
}
}
return serviceResponse;
}
Исключение
начало сервисного вызова: 5: 21: 16 AM
Исключение поймано-
Произошла ошибка при отправке запроса.
в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача)
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult ()
в BES_SPServiceTest.Program.d__1.MoveNext ()
Внутреннее исключение:
Базовое соединение было закрыто: при получении произошла непредвиденная ошибка.
at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar)
Внутреннее исключение
Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.
в System.Net.Security._SslStream.EndRead (IAsyncResult asyncResult)
в System.Net.TlsStream.EndRead (IAsyncResult asyncResult)
в System.Net.PooledStream.EndRead (IAsyncResult asyncResult)
в System.Net.Connection.ReadCallback (IAsyncResult asyncResult)
Внутреннее внутреннее исключение
Существующее соединение было принудительно закрыто удаленным хостом
в System.Net.Sockets.Socket.EndReceive (IAsyncResult asyncResult)
в System.Net.Sockets.NetworkStream.EndRead (IAsyncResult asyncResult)
остановка: 5: 26: 16 AM