我正在开发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
这是什么问题?
答案 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" />