互联网连接断开后,mono上的Webrequest无法恢复

时间:2019-05-27 09:11:49

标签: c# mono webrequest

我有一个嵌入式设备,该设备定期向后端发布POST状态。如果互联网连接丢失,我首先会获得一个超时连接。如下调用将产生“没有路由器ConnectFailure(没有通往主机的路由)”异常。

但是,当重新建立Internet连接时,呼叫将失败,并出现超时异常,并且它将永久执行。似乎某些资源未正确释放。 该代码在本机.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;
    }

非常感谢您。

0 个答案:

没有答案