【发布时间】: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