1

当第一页上传文件时,我无法从我自己的 ASP.NET MVC 网站打开第二页。第一个页面似乎阻止了第二个页面,我必须等待它完成上传或清除网站 cookie 才能打开另一个页面。

如何解决这个问题?

谢谢

4

1 回答 1

2

问题是因为 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 或其他异步事物(例如线程)不会解决问题,因为当从启用会话的操作调用线程时,另一个也启用会话的操作也会排队。

于 2013-08-30T03:23:11.507 回答