У меня есть встроенное устройство с обычным статусом POST для бэкэнда.Если соединение с интернетом потеряно, я сначала получаю соединение по тайм-ауту.Следующий вызов дает исключение «Нет маршрутизатора ConnectFailure (Нет маршрута к хосту)», как ожидалось.
Однако, когда подключение к Интернету восстанавливается, вызов завершается неудачно с исключением по времени ожидания, и это происходит всегда.Кажется, что некоторые ресурсы не выпущены должным образом.Код работает на родном .net.Моно версия 5.12.0.226.У кого-нибудь есть идеи в чем проблема и есть ли решение?Код выглядит так:
private bool PostMessage(string message)
{
try
{
WebRequest webClient = WebRequest.Create(m_topicPostUrl);
webClient.Method = "POST";
webClient.Headers["Authorization"] = m_topicSAS;
webClient.ContentType = "application/atom+xml;type=entry;charset=utf-8";
byte[] byteArray = Encoding.UTF8.GetBytes(message);
webClient.ContentLength = byteArray.Length;
using (Stream dataStream = webClient.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
using (WebResponse response = webClient.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseFromServer = reader.ReadToEnd(); // data not used
}
}
}
return true;
}
catch (WebException ex)
{
AddMessageToLog(ex.Message);
}
return false;
}
Большое спасибо.