目前在我们的应用程序中,当执行第一个HTTP Webrequest时,我看到很大滞后。根据我们的日志,有30-60秒的滞后。它会阻止在HttpWebRequest.BeginGetResponseHttpWebRequest.BeginGetResponse块30-60秒
下面是从MSDN报价:
的BeginGetRequestStream方法需要一些同步设置任务 完成(DNS解析,代理检测和TCP套接字 连接,例如)在这个方法变得异步之前。作为 结果,不应在用户界面(UI) 线程上调用此方法,因为它可能需要一些时间(通常为几秒)。在 某些环境中,webproxy脚本未正确配置 ,这可能需要60秒或更长时间。配置文件元素上的 downloadTime属性的默认值为 一分钟,这占据了大部分潜在时间延迟。
我知道有DNS解析,代理检测和其他所需的东西。但30-60秒太长了。当我在任何浏览器中输入相同的URL时,我立即得到该页面。当我解决DNS手册时,也没有任何延迟。 对同一个URI的所有并发请求都不会被阻塞。当我重新启动应用程序时,第一个请求再次阻止最小值。 30秒。
这是一个已知的问题?有错误吗?我们在不同的机器上看到这一点,所以我认为我的开发人员机器不是问题。
下面是一些示例代码:
private void TestWebRequest()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://matrix.ag-software.de/http-bind");
request.ContentType = "text/xml; charset=utf-8";
request.Method = "POST";
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
}
private void GetRequestStreamCallback(IAsyncResult result)
{
//
}
更新:这必须是我的Windows 7安装的一个问题。我测试了2台其他机器,并且不会在那里导致相同的问题。我看到客户的日志文件具有完全相同的问题。这似乎发生在某些机器的某些条件下。
这是针对内部网或互联网网址吗? – Justin 2013-03-26 14:26:20
我添加了一些示例代码。我有内部和外部的问题。也许它只是一个针对这个特定服务器实现的问题,可以通过一些特殊的设置来解决。 关于MONO我们没有这个问题。目前我正在调试完整的.NET框架3.5。所有框架版本上都不存在该问题。例如Silverlight似乎工作正常,但它使用浏览器堆栈。 – Alex 2013-03-26 14:34:09
你有没有尝试过,如果对任何其他网站,如谷歌或stackoverflow?它存在吗? – Justin 2013-03-26 14:38:45