当第一页上传文件时,我无法从我自己的 ASP.NET MVC 网站打开第二页。第一个页面似乎阻止了第二个页面,我必须等待它完成上传或清除网站 cookie 才能打开另一个页面。
如何解决这个问题?
谢谢
当第一页上传文件时,我无法从我自己的 ASP.NET MVC 网站打开第二页。第一个页面似乎阻止了第二个页面,我必须等待它完成上传或清除网站 cookie 才能打开另一个页面。
如何解决这个问题?
谢谢
问题是因为 ASP.NET 糟糕的会话设计,当您使用 MVC Action 背后的代码启用会话时,并调用发送大量数据的操作,例如在进行上传时,会话将被 ASP.NET 锁定
当会话被锁定时,当您请求另一个包含会话的 MVC 操作时,该请求将被排队并且不会被处理,直到锁定会话的前一个 MVC 操作释放它。这是我最近发现的 ASP.NET 上的一个重大设计错误
这就是为什么许多大网站使用 SessionStateAttribute 禁用默认 ASP.NET 会话的原因
[SessionState(SessionStateBehaviour.Disabled)]
并且这也是 Microsoft 的一个错误,因为该属性仅由 CLass 而不是 Method 接受,因此您必须按照此 URL Apply session state behavior per action中的说明进行解决
看到这里,我真的很担心 ASP.NET 技术是我为我的网站选择的正确技术,由于微软所做的所有这些限制,我在这项技术上的努力和学习时间会被浪费掉。
此外,实现 ajax 或其他异步事物(例如线程)不会解决问题,因为当从启用会话的操作调用线程时,另一个也启用会话的操作也会排队。