Проблема в отправке сеанса для просмотра на Asp. Net MVC - PullRequest
0 голосов
/ 14 января 2020

Я хочу запретить клиентам доступ к маршруту Home / Index, когда они не вошли в систему. Поэтому мой код здесь:

@{
    Layout = null;
    if (Session["userId"]==null)
    {
        Response.Redirect(Url.Action("Index","Login"));

    }
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>QIndex</title>
</head>
<body>
    <div>
        <h1>Profile</h1>
        <h2>Hello @Session["userName"].ToString() </h2>
        <a href=@Url.Action("LogOut","Login")>خروج</a>
    </div>
</body>
</html>

Проблема в том, что когда я исключаю @Session["userName"].ToString(), все становится хорошо. Но когда это не устранено, в этой строке возникает ошибка System.NullReferenceException: 'Object reference not set to an instance of an object.'. Я установил точку останова на if (Session["userId"]==null). Я понял, что компилятор переходит к <h2>Hello @Session["userName"].ToString() </h2>, прежде чем проверяет оператор if, а затем возвращается к if.

1 Ответ

1 голос
/ 14 января 2020

Просто удалите .ToString(). Она должна правильно отображать строку без нее.

...