dr.*_*vil 8 iis-6 http asp-classic
我有2个ASP页面.
我向Firefox的第一页请求(在服务器端需要30秒才能处理),在30秒执行期间,我从Firefox到第二页请求另一个请求(服务器端不到1秒) ),但它确实在31秒后出现.因为它等待第一次完成请求.
当我从Firefox请求第一页然后从IE请求第二页时,它就是即时的.
所以基本上ASP-IIS 6以某种方式将每个客户端限制为一次一个请求(长处理请求).我需要在我的.NET客户端应用程序中解决这个问题.
这在3个不同的系统中进行了测试.如果要测试,可以在最后尝试ASP脚本.
在长SQL执行中或仅在耗时的ASP操作中,此行为相同.
注意:
有没有办法解决这个问题?
示例ASP代码:
第一个ASP:
<%
Set cnn = Server.CreateObject("Adodb.Connection")
cnn.Open "Provider=sqloledb;Data Source=.;Initial Catalog=master;User Id=sa;Password=;"
cnn.Execute("WAITFOR DELAY '0:0:30'")
cnn.Close
%>
Run Code Online (Sandbox Code Playgroud)
第二个ASP:
<%
Response.Write "bla bla"
%>
Run Code Online (Sandbox Code Playgroud)
Ant*_*nes 10
这是由于ASP管理Sessions的方式.Session对象是单线程的,因此一次只能由一个工作线程访问.当第二个请求到达的时间与现有线程已处理的相同会话时,该请求由ASP排队,直到会话对象可用.
即使您实际上没有在相关页面中使用会话对象,也会发生这种情况.
因此,当您从FF发出一个请求而另一个从IE发出请求时,您将有两个不同的会话,因此两个请求可以同时进行.你可以使用两个不同的IE实例获得相同的效果.
如果您知道永远不需要会话对象,则可以进入应用程序配置并将其关闭(这意味着没有ASP页面会触及会话对象).在这种情况下,ASP将允许同时处理来自同一浏览器实例的多个请求(因为它无法知道请求来自同一浏览器实例).
但是在大多数情况下,ASP代码对会话对象有一些用处(即使它只是标记了登录的会话).在这种情况下,除非将被调用的两个ASP页分隔为单独的应用程序,否则您将遇到此行为.
| 归档时间: |
|
| 查看次数: |
3591 次 |
| 最近记录: |