Jon*_*upp 7 internet-explorer-9 asp.net-4.5 iis-8
场景:
SessionState(SessionStateBehavior.Required)属性(ReadOnly不受影响)的控制器的AJAX POST(GET不受影响)请求.有些东西可以防止此请求被立即处理(例如正在进行会话锁定的另一个请求).结果:
进一步挖掘IIS失败的请求跟踪创建的日志表明,在会话状态被锁定(在阶段期间)之后,AJAX POST会像这样崩溃REQUEST_ACQUIRE_STATE,但由于REQUEST_RELEASE_STATE阶段没有发生,因此不会释放会话锁定.我假设有一些安全机制可以在80-120秒之后解锁会话,但这个很长时间的挂起显然对我的用户来说是不受欢迎的.
我有一个简单的VS2012/.Net 4.5/MVC4项目,可以在https://github.com/jorupp/Ie9SessionCrash上找到这个问题(有一个页面可以通过Sleep调用发布一系列帖子).显示问题的IIS失败请求跟踪位于https://github.com/jorupp/Ie9SessionCrash/tree/master/Ie9SessionCrash/TraceOfHttp500的项目中.
为了解决这个问题,我们计划确保我们永远不会对需要会话的操作进行任何AJAX POST调用,并且:
SessionState(SessionStateBehavior.ReadOnly)属性的控制器.有没有更好的方法来解决这个问题,或者我错过了与此相关的IIS/.Net补丁?或者这种情况是否因其他原因无效?我为此错误地指责框架/ IIS,但我认为我已经消除了我的代码是错误的.
这似乎是ASP.NET 4.5中的回归.我们的团队正在开发补丁,但作为临时解决方法,请尝试将此行放在Web.config中(此处有更多信息):
<system.webServer>
<serverRuntime uploadReadAheadSize="0" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
如果这对你有用,请告诉我们!
| 归档时间: |
|
| 查看次数: |
4407 次 |
| 最近记录: |