【问题标题】:ASP.NET application to serve multiple requests from a single processASP.NET 应用程序为来自单个进程的多个请求提供服务
【发布时间】:2012-06-06 11:08:38
【问题描述】:

我目前正在调试一些关于此的问题。

我们有一个 ASP.NET Web 应用程序,我正在 Cassini 上进行调试。当我尝试使用 IE 并向服务器发送请求时,需要一些时间(例如大约 20 分钟)来处理然后发送响应。

在多标签 IE 的情况下,我尝试将不同标签中的请求同时发送到同一台服务器,但只有在发送响应之一后才会处理响应。

如果启动一个新的 IE 实例并在这些不同的实例中发出请求,服务器几乎可以同时处理和发出响应。在做了一些研究后,我发现 IIS express 可以解决我的问题,但我不能。有没有人遇到过类似的问题,或者我错过了一些非常重要的事情要先检查?

感谢您的帮助。

【问题讨论】:

    标签: asp.net iis cassini


    【解决方案1】:

    这主要是由于 ASP.net 的会话状态变量以及一次只有一个请求可能对特定会话具有 R/W 访问权限(由 SessionID cookie 确定)这一事实。

    在前一个请求完成之前,任何需要任何形式的会话访问(因为读/写是默认设置)的其他请求都将被阻止。

    基于以下链接:

    【讨论】:

      【解决方案2】:

      我认为您错过了会话​​锁定所有请求每次只留下一个运行这一点。

      阅读相关内容以及原因: Replacing ASP.Net's session entirely

      还有:Web app blocked while processing another web app on sharing same session

      【讨论】:

      • 好的,让我检查一下链接,看看我的问题是否可以解决。非常感谢!
      • @redcomethk 没有问题,会话是如何工作的,并且还解决了其他同步问题。如果您希望避免这种情况发生,您需要关闭会话,或者至少不使用超过几秒钟才能完成的页面。或者制作一个完全自定义的会话(这就是我所做的)并根据需要处理数据。
      【解决方案3】:

      原因是 ASP.NET 中的会话不是线程安全的。因此,ASP.NET 序列化对来自同一会话的请求的访问。

      如果您有一个多标签 IE,那么您的标签共享一个会话。第一个请求立即执行,其他请求排队。如果您有不同的实例,那么每个实例都会创建一个新会话,因此请求会并行执行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 2010-09-18
        • 2012-09-01
        • 1970-01-01
        相关资源
        最近更新 更多