我试图找出为什么ASP.NET Development Server不会同时处理请求。
所以我用以下代码创建了一个简单的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秒。这意味着,服务器逐个(不同时)执行请求。
根据this topic中提供的建议,我在页面中添加了EnableSessionState="false"
,但这似乎没有帮助。
如何同时处理请求的任何想法?
答案 0 :(得分:7)
asp.net dev服务器(cassini)无法处理多个线程。因此,它可以有效地一次处理一个请求。关闭会话确实不会影响这一点。
这真的只适用于有限的单用户测试网络应用程序。
我建议你转储cassini并安装IIS Express,或者只是转到完整的IIS实现。
一点阅读:ASP.NET Dev Server (Cassini), IIS Express and multiple threads
答案 1 :(得分:0)
XP上的IIS不允许那么多并发连接(我认为它是10)。如果您正在该环境中进行开发,那么这可能就是您遇到这种情况的原因(除了这2个请求之外,您还有对引用文件的请求,而且您可能发出的请求比您认为的特定页面要多)
我不确定VS内置服务器是否有类似的限制。
答案 2 :(得分:0)
如果您在不禁用SessionState的情况下使用ASP.NET MVC(默认情况下会这样),您的请求将自动序列化 - 因此,如果您要检查具有随机Thread.Sleep()
值的竞争条件,则请求即使睡觉的时间较短,B也不会在请求A之前完成。