这个ASP.Net配置有什么问题,因为它与Sessions有关?

时间:2011-03-01 18:40:01

标签: asp.net session session-state session-timeout

这可能是一个明显的解决方案,但我现在已经打了一段时间了,只需要第二眼就能指出我做错了什么。

我在web.config中有一个新的ASP.Net MVC项目,其中包含以下(相关)信息:

 <system.web>
   <authentication mode="Forms">
     <forms loginUrl="~/User/Login" name="TestProjectSession" timeout="30" />
   </authentication>
   <sessionState mode="InProc" cookieless="false" timeout="30" />
 </system.web>

我正在尝试做的所有事情(现在,因为这已经破了),是在一个页面上为会话写一个值并在另一个页面上检索它...

相关代码:

的Global.asax.cs

protected void Session_Start() { Session.Add("UserID", ""); }

身份验证操作(检索用户信息后):

Session["UserID"] = "useridgoeshere";

我遇到的问题是在发出身份验证响应后请求任何页面时调用Session_End。我假设这意味着某种程度上我的会话配置无效,但我无法看到基于上述信息的方式。在浏览器上启用了Cookie,我尝试过使用无Cookie会话,以防万一没有任何更改。

有人可以提出关于我可能配置不当的建议吗?

开发环境是VS2010 / C#/ ASP.Net MVC3

2 个答案:

答案 0 :(得分:0)

这一切对我来说都很好。

您是否在项目的任何地方接到了Session.End()的电话?如果是这样,也许可以在其上设置一个断点,看看它是否被意外调用。

答案 1 :(得分:0)

看起来这与我使用DotNetOpenAuth的方式有关。

我仍然无法弄清楚收到身份验证响应时调用Session_End的原因(我怀疑这可能是设计的),但我已设法通过持久化会话值来实现解决方法我需要(UserID等)到cookie,然后在下次调用Session_Start时从cookie重建会话。