2015-02-19 7 views
0

В моем проекте MVC, я использую значение сеансового как«System.NullReferenceException» по использованию сессии в MVC

var empId = Convert.ToInt32(Session["EmpId"].ToString()); 

Я получаю исключение:

«Исключение типа„System.NullReferenceException“ произошел в Project.Web.dll, но не был обработан в коде пользователя.

Дополнительная информация: Ссылка на объект не установлена ​​в экземпляр объекта. "

+1

Вы уже проверили сессии [ "EmpId"] для нулевой? – Ben

ответ

2

Эта ошибка возникает, когда вы вызываете метод на нулевом объекте. В вашем случае значение Session["EmpId"] равно NULL.

Это значит, что вы вызываете NULL.ToString(), что приводит к его ошибке.

Вы можете избежать ошибки с помощью оператора null coaleascing или просто проверить нуль перед выполнением любой операции на нем.

Решение:

if(Session["EmpId"] == null) 
//do something 
else 
var empId = Convert.ToInt32(Session["EmpId"].ToString()); 

В качестве альтернативы вы можете проверить мой blog post на нем

+0

У меня есть один и тот же вопрос, но мое определение собственности, как это получить { если (Session [ "_ exportViewModel1"] == NULL) Session [ "_ exportViewModel1"] = новый BG.Indigo.Controls.Utilities.CountrySurveyReportExportVM(); return (BG.Indigo.Controls.Utilities.CountrySurveyReportExportVM) Session ["_ exportViewModel1"]; } set { Сессия ["_ exportViewModel1"] = значение; } – Rob

0

Вы должны проверить null, как показано ниже: -

var empId = Convert.ToInt32((Session["EmpId"] ?? 0).ToString()); 

Более эффективный способ выполнить ваши требования: -

int temp = 0; 
var empId = int.TryParse(Convert.ToString(Session["EmpId"]),out temp); 
+0

@ KarthikeyanP почему непринятый ответ? –

1

Перед использованием первой проверки является его недействительным или нет.

var empId = Session["EmapId"] != null ? Convert.ToInt32(Session["EmapId"]) : 0; 
Смежные вопросы