【问题标题】:ASP.NET Development Server concurrent processing doesn't workASP.NET 开发服务器并发处理不起作用
【发布时间】:2012-02-20 14:39:33
【问题描述】:

我试图找出为什么 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 秒。这意味着,服务器一个接一个地执行请求(不是同时执行的)。

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

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

【问题讨论】:

    标签: asp.net .net concurrency asp.net-development-serv


    【解决方案1】:

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

    这实际上只是针对网络应用的有限单用户测试。

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

    一点阅读:ASP.NET Dev Server (Cassini), IIS Express and multiple threads

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我不明白为什么这个答案被认为如此离题,以至于有人反对它。我认为它是相关的,即使它并没有真正回答这个问题(虽然它很模糊),但它不应该受到惩罚。如果有的话,我应该得到“谢谢,无论如何”。好吧,不管怎样,谢谢做这件事的人。
      • 是的,你提供了一个很好的视角,不应该受到惩罚,但应该得到奖励......
      【解决方案3】:

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

      ASP.NET MVC and Ajax, concurrent requests?

      【讨论】:

        猜你喜欢
        • 2011-06-22
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 2018-11-24
        • 2016-12-16
        • 2021-01-27
        • 2023-03-14
        • 1970-01-01
        相关资源
        最近更新 更多