使用POST的MVC2无Cookie会话问题

时间:2010-10-19 20:24:04

标签: asp.net-mvc asp.net-mvc-2

由于某些原因在MVC2中启用了cookieless会话,查询字符串中的会话ID将随每个发生的表单发布重置。是否有需要设置的特殊路线才能使用?

我还需要注意其他问题吗?

感谢。

3 个答案:

答案 0 :(得分:4)

无Cookie会话在MVC2中有效,但是,您不能使用POST作为表单提交的方法。它只支持使用GET。此外,表单上的所有操作路径都需要更新为以下模式:

<form action="<%= Response.ApplyAppPathModifier("/SomeController/SomeAction") %>" method="get">

这将确保会话ID自动传递。这是web.config文件中启用无Cookie会话所需的行:

<system.web>
    <sessionState cookieless="true" regenerateExpiredSessionId="true"></sessionState>
</system.web>

通过以上两项更改,一切正常!

如果您对使用POST无法使用Cookieless会话和MCV2的解决方法感兴趣,我找到了以下页面。 Enabling POST in Cookieless ASP.NET这不适合我的项目,因为我无法使用JavaScript。

答案 1 :(得分:1)

MVC 2不支持无Cookie会话,MVC的未来版本不太可能支持。有关详细信息,请参阅http://forums.asp.net/p/1517391/3738312.aspx

答案 2 :(得分:0)

Microsoft Security Bulletin MS10-070 - Important: Vulnerability in ASP.NET Could Allow Information Disclosure (2418042)

如果安装了此更新,请检查此KB。

Http.sys registry settings for IIS

使用无Cookie会话&amp;表单身份验证自动插入此(“/(S(...)F(...))/”)Url路径段。 默认UrlSegmentMaxLength是260,但MS10-070安装了环境。我认为这是填充oracle的结果。

希望这有帮助!