【问题标题】:vb.net multiple webclient request are slowvb.net 多个 webclient 请求很慢
【发布时间】:2014-06-12 14:25:14
【问题描述】:

我有以下情况。

使用 Javascript 我对 vb.NET 页面执行 6 个 AJAX 请求。

  $.ajax({type: 'POST', url: "/ajax/ajax.aspx?c=1"});
  $.ajax({type: 'POST', url: "/ajax/ajax.aspx?c=2"});
  $.ajax({type: 'POST', url: "/ajax/ajax.aspx?c=3"});
  $.ajax({type: 'POST', url: "/ajax/ajax.aspx?c=4"});
  $.ajax({type: 'POST', url: "/ajax/ajax.aspx?c=5"});
  $.ajax({type: 'POST', url: "/ajax/ajax.aspx?c=6"});

这些页面向其他服务器(网站)发出网络请求。 这大约需要 1.5 分钟。

当我注释掉网络请求并逐个尝试它们时,它们都会在 20-30 秒内响应。 因此,尽管请求是异步的,但它们似乎正在等待服务器端上一个完成。

Dim webClient As New System.Net.WebClient
webClient.Encoding = Encoding.UTF8
webClient.Proxy = Nothing
Dim result As String = webClient.DownloadString([website])

所以我在网上搜索了一下,发现 webclient 的默认连接限制为 2。这些线程中的答案告诉我在 web.config 中设置更高的 maxconnection 值。所以我做到了。

web.config:

<system.net>
    <connectionManagement>
      <add address="*" maxconnection="1000"/>
    </connectionManagement>
</system.net>

但这似乎不起作用。我在 IIS 中重新启动了网站和应用程序池,但我仍然得到 > 1.5 分钟的响应,而每个人都在 20 秒内完成。

那么,有人知道如何解决这些缓慢的响应吗?

【问题讨论】:

  • 您是否尝试过循环并为每个请求创建一个新的WebClient
  • 嗯,.NET 页面上只有 1 个 webrequest。页面本身被 AJAX 调用了 6 次。所以没有循环服务器端。
  • 是否值得在服务器方法进入和退出时添加一点write-to-a-text-file,以首先了解请求是否正在排队?
  • 可能是,但我该怎么做。 Webclient 没有“启动”功能。当我调用该函数时,它可能会将请求排队,但请求会被执行。

标签: asp.net .net vb.net httpwebrequest webclient


【解决方案1】:

发现问题。这不是 webrequest,而是 Javascript 的大量 ajax 调用。 浏览器不允许超过一定数量的连接并将它们排队。 所以我提出了 1 个请求并处理了异步事物服务器端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 2018-06-28
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多