- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前在我们的一个应用程序中,我发现在执行第一个 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/
我需要对 Web 资源发出异步请求并使用此页面 (link to full example) 中的示例: HttpWebRequest myHttpWebRequest= (HttpWebReques
这是我的代码: namespace RequestApi { public partial class MainPage : PhoneApplicationPage {
因此,我正在创建一个使用HTTP API来获取约50,000个帐户中每个帐户状态的应用程序。该代码循环遍历每个帐户,并为其发送HTTP请求。当我根据某些条件收到http请求的响应时,将创建一个新线程来
我无法按照示例获取回调。 我有以下代码: private void startWebRequest(object sender, EventArgs e) { Uri url
我在任务工厂内部调用 httpwebresponse,执行 1 次后抛出异常 无法在上一个调用仍在进行时重新调用 BeginGetRequestStream/BeginGetResponse 我的代码
我想使用 BeginGetResponse 方法来调用列表中的许多 URL。我有 2 个关于如何实现这个的问题: 根据 http://msdn.microsoft.com/en-us/library/
我遇到这样一种情况,我需要通过 Web 请求发送自定义值,以便我可以在我的应用程序收到的响应中使用它。因为我的应用程序可能会发送多个请求,所以我正在使用 BeginGetResponse异步发送每个请
我正在尝试异步发出网络请求。我的代码工作正常,除了一件事:似乎没有内置方法可以在 BeginGetResponse 上指定超时。 MSDN 示例清楚地显示了一个工作示例,但其缺点是它们最终都以 Som
我正在编写一个 Windows Phone 8 应用程序,它应该向服务器发送 GET+POST 请求并解析答案。 我用来发送请求和获取响应的代码如下(它写在一个单独的静态类中):
我再次遇到 PCL(可移植类库)中的 WebRequest 问题。 我有这段代码: static ManualResetEvent allDone = new ManualResetEvent
我正在使用 HttpWebRequest 调用网络服务。如果 BeginGetResponse 的 AsyncCallback 抛出错误,我想将它传播到我的主程序流。我在执行此操作时遇到了问题,因为错
HttpWebRequest.BeginGetResponse 不遵守 HttpWebRequest 的任何超时属性(Timeout 或 ReadWriteTimeout)。 我阅读了一些方法来获得相
我正在高负载下测试 ASP.NET (.NET 4) 网络应用程序,发现在某些情况下 HttpWebRequest.BeginGetResponse() 会同步完成,不会抛出任何异常。 在高负载下在多
我有以下代码: private void GetRequestStreamCallback(IAsyncResult asynchronousResult) {
我在我的代码调用中使用 HttpWebRequest.BeginGetResponse() 方法从我的服务器获取数据。服务器生成的内容范围可能从几 KB 到几 GB。 我的问题是 HttpWebReq
我想知道这两种方法中哪种方法更好?我需要创建一个 200 毫秒到 5 秒之间的 Web 请求。我需要 html 响应才能继续 - 所以需要在主线程上阻塞。 第一种方法 string GetRespon
我正在使用一个使用 web 服务来推送一些事件的客户端 - web 服务的设计是这样的,即在客户端发布订阅命令时,它会发回一些感兴趣的事件并继续这样做只要客户端保持连接。 当 POST 命令时,服务会
目前在我们的一个应用程序中,我发现在执行第一个 HTTP Webrequest 时有很大的滞后。根据我们的日志,有 30 - 60 秒的延迟。它在 HttpWebRequest.BeginGetRes
我正在尝试异步获取 HttpWebResponse 对象,以便允许取消请求(使用 BackgroundWorker.CancellationPending 标志)。但是,下面的 request.Beg
我想在 UI 上显示下载正在进行时下载文件。使用 WebRequest 我有两个选择: 使用 WebRequest.BeginGetResponse 和相关方法。 优点:可以以字节为单位显示准确的进度
我是一名优秀的程序员,十分优秀!