ASP.NET + С# HttpContext.Current.Session имеет значение null (Inside WebService)
так я начинаю сеанс
protected void Session_Start(object sender, EventArgs e)
{
HttpContext.Current.Session["CustomSessionId"] = Guid.NewGuid();
}
в моем решении под библиотекой классов, я получаю тригг для доступа к нему и получения нулевого исключения:
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
Согласно вашим комментариям, кажется, что вы пытаетесь получить доступ к сеансу в веб-службе. Веб-службы не имеют гражданства и как они должны быть. Если вы хотите нарушить это правило и сделать его работоспособным, вы можете включить сеансы в классическом веб-сервисе ASMX следующим образом:
[WebMethod(EnableSession = true)]
public void SomeMethod()
{
... invoke the method in your class library that uses Session
}
Говоря это, использование HttpContext.Current
в библиотеке классов - это очень практичная практика, которую следует избегать по любой цене.