Я вызываю веб-интерфейс через файл dll, который используется клиентским настольным приложением .net. Файл Dll записан в .Net 4.0
.
Иногда я получаю частые ошибки в этой строке.
var postResponse = client.PostAsJsonAsync(path, Input).Result;
После сообщения об ошибке я проверяю файлы журнала IIS и веб-службы. Что касается файлов журнала, приведенная выше строка кода не попала в веб-службу, поскольку веб-метод регистрирует все действия в своем собственном файле журнала.
Есть ли способ избежать ошибок тайм-аута.
Код файла Dll
private T CallService<T>(string path)
{
using (var client = new HttpClient())
{
client.BaseAddress = EndpointAddress;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.Timeout = TimeSpan.FromSeconds(30);
var response = client.PostAsJsonAsync(path, Input).Result;
if (response.IsSuccessful)
{
var serviceResponse = response.Content.ReadAsAsync<T>().Result;
// return service response;
}
else
{
// return default (T)
}
}
}
Метод веб-службы
[HttpPost]
public CusResponse GetCustomer(CustomerOperationInput input)
{
}
Вот данные заголовка, когда они истекают
{StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Pragma: no-cache
Connection: close
Cache-Control: no-cache
Date: Wed, 06 Nov 2019 11:06:45 GMT
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 36
Content-Type: application/json; charset=utf-8
Expires: -1
}}
Ошибка в файле трассировки IIS
<EventData>
<Data Name="ContextId">{00000000-0000-0000-230F-008000000019}</Data>
<Data Name="ModuleName">ManagedPipelineHandler</Data>
<Data Name="Notification">128</Data>
<Data Name="HttpStatus">500</Data>
<Data Name="HttpReason">Internal Server Error</Data>
<Data Name="HttpSubStatus">0</Data>
<Data Name="ErrorCode">0</Data>
<Data Name="ConfigExceptionInfo"></Data>
</EventData>