2015-12-10 2 views
1

В классе Authorizaiton я назначаю объект пользователя к сеансуHttpContext.Current.Session метание ссылочного объекта ошибки в сервере не в локальной

HttpContext.Current.Session[Constants.SessionActiveUserInfo] = userInfo; 

Он работает отлично в местном, но в сервере он бросает

«Ссылка на объект не установлена ​​в экземпляр объекта».

Когда я нахожу URL-адрес с контроллером/именем actionmethod, он выдает HTTP-ошибку 500 («Ссылка объекта не установлена ​​на экземпляр объекта.») Из-за сеанса. Тогда, если я снова удалю URL-адрес, он работает нормально.

Почему это так? Любая помощь?

+0

Что такое 'Constants.SessionActiveUserInfo'? – Greg

+0

Название сессии, получающей ее из класса Constants – user1893874

ответ

0

У меня возникла проблема в Model View Controller, где сеанс не был создан. Проблема, с которой я верю, что вы сталкиваетесь, заключается в том, что сеанс фактически не находится на сервере, когда вы переходите к этому контроллеру.

Ниже, вместо вызова сеанса напрямую, я бы назвал SessionModify<Example>("Sample", example);, если он существует, присвоит значение, если не добавит сессию.

Я создал класс, чтобы помочь управлять сессии:

public static class Storage 
{ 
    public static void SessionAdd<T>(string label, T value) 
    { 
      if(!string.IsNullOrEmpty(label)) 
       HttpContext.Current.Session.Add(label, value); 
    } 

    public static void SessionModify<T>(string label, T value) 
    { 
      if(HttpContext.Current.Session[label] != null) 
      { 
       HttpContext.Current.Session[label] = value; 
       return; 
      } 

      SessionAdd(label, value);    
    } 

    public static T SessionModifyAndReturn<T>(string label, T value) where T : class, new() 
    { 
      var content = new T(); 
      if(HttpContext.Current.Session[label] != null) 
       HttpContext.Current.Session[label] = value; 
      else { SessionAdd(label, value); } 

      content = value; 
      return content; 
    }   
} 
+0

Спасибо. Позвольте мне реализовать то же самое – user1893874

+0

@ user1893874 Помогло ли это решить вашу проблему? – Greg