gpt4 book ai didi

c# - HttpWebRequest.BeginGetResponse block 30-60 秒

转载 作者:行者123 更新时间:2023-11-30 17:54:50 26 4
gpt4 key购买 nike

目前在我们的一个应用程序中,我发现在执行第一个 HTTP Webrequest 时有很大的滞后。根据我们的日志,有 30 - 60 秒的延迟。它在 HttpWebRequest.BeginGetResponse 处阻塞

这是来自 MSDN 的引述:

The BeginGetRequestStream method requires some synchronous setup tasks to complete (DNS resolution, proxy detection, and TCP socket connection, for example) before this method becomes asynchronous. As a result, this method should never be called on a user interface (UI) thread because it might take some time, typically several seconds. In some environments where the webproxy scripts are not configured properly, this can take 60 seconds or more. The default value for the downloadTime attribute on the config file element is one minute which accounts for most of the potential time delay.

我知道需要 DNS 解析、代理检测和其他内容。但是 30-60 秒太长了。当我在任何浏览器中输入相同的 URL 时,我会立即获得该页面。当我手动解析 DNS 时也没有延迟。对同一 URI 的所有并发请求都不会阻塞。当我重新启动应用程序时,第一个请求再次阻塞了 min。 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 台机器,但不会在那里引起同样的问题。我已经看到来自具有完全相同问题的客户的日志文件。这似乎在某些机器上的某些条件下发生。

最佳答案

我刚刚也遇到了同样的事情。

我发现 Microsoft 客户端防火墙正在生成它。我用它来避免浏览我公司的代理。我的第一个解决方法是将 request.Proxy 设置为硬编码。为了避免那行丑陋的代码,我最终禁用了 Microsoft 客户端防火墙并在 Internet 选项中设置了代理。

希望这对您有所帮助。

正如@EricLaw 所说,System.Net 日志记录可能会有所帮助。这是指向 MSDN 的链接 Enable System.Net logging .

关于c# - HttpWebRequest.BeginGetResponse block 30-60 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15639322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com