6

我试图找出为什么 ASP.NET 开发服务器没有同时处理请求。

因此,我使用以下代码创建了一个简单的 aspx 页面:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

System.Threading.Thread.Sleep(10000)

End Sub

如果我打开页面两次,响应需要 20 秒。这意味着,服务器一个一个地执行请求(不是同时)。

按照本主题中提供的建议,我已添加EnableSessionState="false"到页面中,但这似乎没有帮助。

任何想法如何使请求同时处理?

4

3 回答 3

7

asp.net 开发服务器 (cassini) 无法处理多个线程。因此,它一次有效地处理一个请求。关闭会话真的不会影响这一点。

它实际上只是针对 Web 应用程序的有限单用户测试。

我建议您转储 cassini 并安装 IIS Express,或者直接使用完整的 IIS 实现。

一点阅读:ASP.NET Dev Server (Cassini)、IIS Express 和多线程

于 2012-01-27T16:08:01.863 回答
0

XP 上的 IIS 不允许那么多并发连接(我认为是 10 个)。如果您是在那种环境中开发的,那可能就是您遇到这种情况的原因(除了这两个请求之外,您还有对引用文件的请求,而且您发出的请求可能比您认为针对该特定页面的请求多) .

我不确定 VS 内置服务器是否有类似的限制。

于 2012-01-27T16:08:12.270 回答
0

如果您在没有禁用 SessionState 的情况下使用 ASP.NET MVC(默认情况下您会这样做),您的请求将自动序列化 - 因此,如果您使用随机Thread.Sleep()值检查竞争条件,那么请求 B 将永远不会在请求 A 之前完成如果睡眠时间少。

ASP.NET MVC 和 Ajax,并发请求?

于 2013-02-18T09:31:10.050 回答