ASP.NET + C#HttpContext.Current.Session为null(Inside WebService)

时间:2011-09-25 13:13:52

标签: c# asp.net session null

这就是我发起会话的方式

 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)中

1 个答案:

答案 0 :(得分:30)

根据您的评论,您似乎正在尝试访问Web服务中的会话。 Web服务是无状态的,它们应该是这样的。如果您想违反此规则并使其成为有状态,您可以在经典的ASMX Web服务中启用会话,如下所示:

[WebMethod(EnableSession = true)]
public void SomeMethod()
{
    ... invoke the method in your class library that uses Session
}

话虽如此,在课堂图书馆中使用HttpContext.Current是一种应该不惜一切代价避免的做法。