Веб-приложение вызывает внутренний API REST WCF. Приложение может успешно вызывать сервис как разработчика, так и производства. Но иногда пользователь не может использовать из-за исключения. Приложение запускается с рабочего стола, ipad и других устройств. Он вызывает сервис с использованием WebClient. Я пытался воспроизвести ошибку из Dev, но я не могу. Исключение составляют следующие:
System.Net.WebException: базовое соединение было закрыто:
неожиданная ошибка произошла на приеме. ---> System.IO.IOException:
Невозможно прочитать данные из транспортного соединения: существующий
соединение было принудительно закрыто удаленным хостом. --->
System.Net.Sockets.SocketException: существующее соединение было
принудительно закрывается удаленным хостом
в System.Net.Sockets.NetworkStream.Read (Байт [] буфер, Int32
смещение, размер Int32)
--- Конец внутренней трассировки стека исключений ---
в System.Net.Sockets.NetworkStream.Read (Байт [] буфер, Int32
смещение, размер Int32)
в System.Net.PooledStream.Read (буфер Byte [], смещение Int32, Int32
размер)
в System.Net.Connection.SyncRead (запрос HttpWebRequest, логическое значение
userRetrievedStream, Boolean probeRead)
--- Конец внутренней трассировки стека исключений ---
at System.Net.WebClient.UploadDataInternal (адрес Uri, строка
метод, данные байта [], веб-запрос и запрос)
at System.Net.WebClient.UploadString (адрес Uri, метод String,
Строковые данные)
Производственной средой является Windows Server 2012 и балансировка нагрузки. Я не мог воспроизвести ошибку, но это происходит внезапно, и пользователь не может объяснить поток повышения исключений. Таким образом, я не мог найти образец, чтобы сузить проблему. Я прохожу код и угадываю ошибку и изменяю логику. Я много искал в Google, но не смог найти никаких подсказок.
То, как я называю остальные API, выглядит следующим образом:
try{
var vm = new { lots of fields data };
using (var client = new WebClient())
{
var dataString = JsonConvert.SerializeObject(vm);
client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
client.UploadString(new Uri("http://myservicename/postjsondata"),
"POST", dataString);
}
}
catch(Exception ex)
{
//write to log file.
}
Мне не удалось воспроизвести эту ошибку. Есть ли способ воспроизвести эту ошибку на производстве?