【发布时间】:2015-01-06 20:42:31
【问题描述】:
我需要在控制器中设置一个会话变量,发现设置会话有两种方式,
第一个是Session["SessionId"] = "Session Value";
第二个是System.Web.HttpContext.Current.Session["SessionId"] = "Session Value";
使用第一种方式时,我必须继承: System.Web.HttpApplication。
所以我的控制器看起来像这样 ->
public class LoginControllerWithSession : System.Web.HttpApplication
{
public Boolean userLoginSetSession(string username)
{
Session["username"] = username;
}
}
我的 web.config 看起来像这样 ->
<system.web>
<sessionState mode="InProc">
<providers>
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule"
preCondition="" />
</providers>
</sessionState>
</system.web>
所以我遇到的问题是当Session["username"] = username; 运行时会引发异常:Session state is not available in this context.,如果我使用System.Web.HttpContext.Current.Session 的其他方式,它将引发空指针异常。我不明白我错过了什么。我发现的所有研究都说只使用第一种方法:Session["SessionId"] = "Session Value"; 这应该可以工作,但它对我不起作用。我猜我缺少一些配置或其他什么。任何帮助将不胜感激。提前致谢!
【问题讨论】:
-
为什么你的控制器继承自 System.Web.HttpApplication 而不是 Controller?
标签: c# asp.net session controller web-config