Asp.net MVC 3中的SessionState属性是否正常工作?
我正在管理一个相当大的项目,它是用asp.NETWebForms+mvc3编写的,拥有大量的用户群和相当高的每日访问量。基本上,在任何给定的时刻都有很多请求 我在MVC中的一个控制器动态处理/调整图像大小时应用了以下属性:Asp.net MVC 3中的SessionState属性是否正常工作?,asp.net,session,asp.net-mvc-3,Asp.net,Session,Asp.net Mvc 3,我正在管理一个相当大的项目,它是用asp.NETWebForms+mvc3编写的,拥有大量的用户群和相当高的每日访问量。基本上,在任何给定的时刻都有很多请求 我在MVC中的一个控制器动态处理/调整图像大小时应用了以下属性: [SessionState(SessionStateBehavior.Disabled)] 现在,如果控制器中的一个操作试图访问会话,它显然会抛出一个异常,所以我们目前为止还不错 问题是:如果我转到“IIS工作进程”窗口(Win Server 2008 R2,IIS 7.5
[SessionState(SessionStateBehavior.Disabled)]
现在,如果控制器中的一个操作试图访问会话,它显然会抛出一个异常,所以我们目前为止还不错
问题是:如果我转到“IIS工作进程”窗口(Win Server 2008 R2,IIS 7.5),并检查此站点的当前请求,我有时会看到对此控制器中某个操作的请求。它们的当前状态锁定在状态:RequestAcquireState,模块名称:Session
。在这种状态下,这些锁有时会超过一两秒钟
属性的全部意义不就是让对控制器的请求忽略状态,而不是浪费时间(可能被锁定)尝试获取状态吗
如果是这样的话——我在这里做错了什么,还是问题出在别处了?[从评论中迁移]
如果您使用的是自定义控制器工厂或路由处理程序,请确保它们知道控制器的会话状态行为。将控制器标记为不需要会话状态需要这两个组件的合作。开箱即用,DefaultControllerFactory和MvcRouteHandler设计用于处理此问题。有关更多信息,请参阅DefaultControllerFactory.GetControllerSessionBehavior和MvcRouteHandler.GetHttpHandler。如果您正在编写自定义组件,您可以使用这些方法作为灵感。嗨,Levi,您能回答这个问题吗,这样我就可以这样标记它了?:)回答得好!我实际上使用了一个自定义路由处理程序,它派生自IRoutHandler。我已经将我的处理程序改为从MvcRouteHandler派生,并确保在重写时使用基本实现。谢谢:)