使用 HttpWebRequest 时的周期性超时

Posted

技术标签:

【中文标题】使用 HttpWebRequest 时的周期性超时【英文标题】:Periodic timeouts when using HttpWebRequest 【发布时间】:2010-12-14 09:26:26 【问题描述】:

我有一些代码可以发送一个简单的 xml 网络请求。它是从 Windows 服务调用的。有时服务开始抛出异常(System.Net.WebException:操作已超时)并且重新启动服务可以解决问题。代码如下:

    public bool PerformXmlRequest(string xml)
    
        var httpRequest = (HttpWebRequest)WebRequest.Create(_url);

        httpRequest.Method = "POST";

        httpRequest.ContentType = "text/xml";

        using (var xmlWriter = new StreamWriter(httpRequest.GetRequestStream(), Encoding.UTF8))
        
            xmlWriter.WriteLine(xml);
        

        using (var httpResponse = (HttpWebResponse)httpRequest.GetResponse())
        
            return httpResponse.StatusDescription == "OK";
        
    

是否有任何明显的错误可能导致此问题?

【问题讨论】:

【参考方案1】:

我找不到调用代码有什么问题。

错误是由客户端代码产生还是来自服务?

如果它来自服务,则需要修复服务,理想情况下,无论您发送什么服务都不应超时,它应该以更可控的方式失败,提供更好的错误消息。

【讨论】:

你是对的。代码没有任何问题。这是一个间歇性的服务器问题。有几点意见。

以上是关于使用 HttpWebRequest 时的周期性超时的主要内容,如果未能解决你的问题,请参考以下文章

HttpWebRequest .GetResponse 抛出 WebException '操作已超时'

如何防止 HttpWebRequest 长时间响应超时 Azure Web App

HttpWebRequest.GetResponse() 不断超时

HttpWebRequest 超时(被阻塞) c#

HttpWebRequest. 频繁采集如何避免 操作超时

使用 HttpWebRequest.Create 时的 C# vs VB 语法