ASP.NET + C # HttpContext.Current.Session является нулевым (внутри WebService) - PullRequest
12 голосов
/ 25 сентября 2011

это то, как я инициирую сеанс

 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 Ответ

30 голосов
/ 25 сентября 2011

Судя по вашим комментариям, вы пытаетесь получить доступ к сеансу через веб-сервис.Веб-сервисы не имеют состояния, и так и должно быть.Если вы хотите нарушить это правило и сделать его состоящим из состояния, вы можете включить сеансы в классическом веб-сервисе ASMX, например, так:

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

При этом использование HttpContext.Current в библиотеке классов является очень практическойследует избегать любой ценой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...