2014-05-14 26 views
1

我正在开发MVC应用程序。在web.config文件中添加SessionState标记后,URL被更改。

我在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

没有问题。

当您使用Cookieless sessionstates时,用户的sessionId嵌入在url中。如果你不想嵌入你应该考虑设置Cookieless为false。

我建议你阅读这documentation它应该概述两者之间的差异。

希望你觉得这个有用。

0

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

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

所以设置:无Cookie为False会为你

<sessionState mode="InProc" cookieless="False" timeout="30" /> 
工作
相关问题