IIS 6/7线程 - 长时间运行的aspx页面阻止其他aspx页面加载

Bro*_*Dev 1 asp.net iis iis-7 iis-6 asp.net-2.0

我写了一个测试页面,在页面加载调用的方法中做了很多繁忙的工作.我现在这个过程大约需要12秒.

如果我在第一个长时间运行的页面加载时尝试加载另一个页面,除了写出一个hello world之外,第二个页面什么都不做,直到第一个长时间运行的页面完成后才会加载.

为什么会这样?我认为IIS能够处理多个并发连接,一个长时间运行的页面会阻止应用程序中的每个其他页面加载,这似乎很疯狂.我必须遗漏一些东西或者不理解IIS是如何工作的.

我认为会在不同的线程上产生多个独立的请求.如果请求完全来自不同的会话,是否只有这种情况?来自单个会话的所有请求都绑定到单个线程吗?

BD

小智 6

您需要关闭sessionState ...如果会话已启用,则任何后续请求正在等待上一个线程完成以继续该特定会话.

因此关闭会话,它不需要等待任何先前的会话.

在web.config中

<system.web>
    <sessionState mode="Off" />
</system.web>
Run Code Online (Sandbox Code Playgroud)

现在你应该同时拥有这些请求进程.


Iai*_*ain 5

我也遇到了这个问题,对我而言,事实证明它是ASP.NET的会话功能.基本上,如果您启用了会话,则每个请求将按照每个用户到达的顺序返回.

尝试使用2种不同的浏览器,对我来说它不再被阻止.这是一个类似的问题:

XP Classic ASP上的IIS 5.1似乎处于单线程模式