这就是我发起会话的方式
protected void Session_Start(object sender, EventArgs e)
{
HttpContext.Current.Session["CustomSessionId"] = Guid.NewGuid();
}
在我的解决方案类库中,我很难访问它并获得null异常:
string sess = HttpContext.Current.Session["CustomSessionId"] ;
这是我在web.config和app.config中的配置(在我的库中)
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
<system.web>
<pages enableSessionState = "true" />
<httpModules>
<add type="System.Web.SessionState.SessionStateModule" name="Session"/>
</httpModules>
<compilation debug="true" targetFramework="4.0" />
</system.web>
(app.config)中
答案 0 :(得分:30)
根据您的评论,您似乎正在尝试访问Web服务中的会话。 Web服务是无状态的,它们应该是这样的。如果您想违反此规则并使其成为有状态,您可以在经典的ASMX Web服务中启用会话,如下所示:
[WebMethod(EnableSession = true)]
public void SomeMethod()
{
... invoke the method in your class library that uses Session
}
话虽如此,在课堂图书馆中使用HttpContext.Current
是一种应该不惜一切代价避免的做法。