在web.config文件中添加SessionState标记后,URL将被更改。

时间:2014-05-14 09:00:01

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

我正在开发MVC应用程序。

我在web.config中添加了以下代码来处理会话。

 <system.web>
       <sessionState mode="InProc"  cookieless="true"   timeout="30" />
  </system.web>

添加此代码后,当我运行应用程序时,我在浏览器中获得以下URL。

http://localhost:65344/(S(egpaesodxcoii0dxtczyi10c))/Login/LoginUser

我很困惑(S(egpaesodxcoii0dxtczyi10c))这一部分。

如果我删除此SessionState标记

<sessionState mode="InProc"  cookieless="true"   timeout="30" />

从网络配置然后它开始正常显示如下

http://localhost:65344/Login/LoginUser

这是什么问题?

2 个答案:

答案 0 :(得分:0)

没有问题。

当您使用Cookieless会话状态时,用户的sessionId将嵌入到网址中。如果您不希望嵌入此内容,则应考虑将Cookieless设置为false。

我建议你读一下这个documentation,它应该勾勒出两者之间的差异。

希望你觉得这很有用。

答案 1 :(得分:0)

会话状态有两种方式可以存储将客户端与服务器会话相关联的唯一ID:通过在客户端上存储HTTP cookie或通过在URL中编码会话ID。将会话ID存储在cookie中更安全,但要求客户端浏览器支持cookie。

对于允许不支持cookie的客户端(例如各种移动设备)的应用程序,会话ID可以存储在URL中。 URL选项有几个缺点。它要求站点上的链接是相对的,并且在会话开始时使用新的查询字符串值重定向页面,并且它会在查询字符串中公开会话ID,在查询字符串中可以将其用于安全攻击。 仅当您需要支持缺少cookie支持的客户时,才鼓励您使用cookieless模式。

所以设置:cookieLess为False将对你有用

<sessionState mode="InProc"  cookieless="False"   timeout="30" />