代码之家  ›  专栏  ›  技术社区  ›  Kiquenet user385990

已超出会话的请求队列限制

  •  0
  • Kiquenet user385990  · 技术社区  · 5 年前

    我在ASP中遇到了这个错误。NET应用程序,NET 4.7.1。

    已超过会话的请求队列限制。

    满:

    System.Web.HttpException (0x80004005): The request queue limit of the session is exceeded.
    at System.Web.SessionState.SessionStateModule.QueueRef()
    at System.Web.SessionState.SessionStateModule.PollLockedSession()
    at System.Web.SessionState.SessionStateModule.GetSessionStateItem()
    at System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData)
    

    有什么建议吗?

    1 回复  |  直到 5 年前
        1
  •  32
  •   Mart Wienk    5 年前

    中的默认行为已更改。净4.7。 Retargeting guide suggests :

    若要还原旧行为,可以将以下设置添加到web.config文件中,以选择退出新行为。

    <appSettings>
      <add key="aspnet:RequestQueueLimitPerSession" value="2147483647"/>
    </appSettings>
    

    改变行为的澄清:

    在。NET Framework 4.6.2及更早版本,ASP。NET执行请求 顺序使用相同的Sessionid和ASP。NET总是发出 默认情况下,Sessionid通过Cookie。如果一个页面需要很长时间 响应时,它将显著降低服务器性能 在浏览器上按F5。在修复中,我们添加了一个计数器来跟踪 排队的请求,并在超过 指定的限制。默认值为50。如果达到限制,a 警告将记录在事件日志中,HTTP 500响应可能 记录在IIS日志中。

    此处也提及: https://knowledgebase.progress.com/articles/Article/The-request-queue-limit-of-the-session-is-exceeded-in-sitefinity-11-2

        2
  •  1
  •   BASKA    3 年前

    有时,此错误是由服务器端的多个重定向产生的,经过调查,我检测到用户在我修复此错误后被ActionsFilter重定向到相同的操作。我认为如果你调查IIS日志,你更有可能发现同样的问题。

    附言 对于此案例设置 RequestQueueLimitPerSession 不会解决问题。

    复制:打开IE 11,打开指定的路径,按F5键60秒。它将向此路径生成大量请求,如果我们查看iis,那么我们会发现一些请求 win-32 status = 64 enter image description here

    对IIS日志的深入分析将为您提供有关此请求/用户代理/所有访问路径/请求状态/…的性质的大量信息。。。

        3
  •  1
  •   kyletme    3 年前

    在活动异常频繁的日子里,我的MVC应用程序(.NET 4.7.2版)也出现了同样的错误。我通过在应用程序的数据库中添加必要的表索引来修复它。在我的例子中,解决方案不是调整“aspnet:RequestQueueLimitPerSession”设置,而是解决导致会话请求超过默认限制的数据库性能方面的根本问题。

    推荐文章