Обновление: Я не могу удалить этот вопрос, потому что за ответ проголосовали, но это совсем не ответ на мой вопрос.Я хотел бы удалить это, так как это была неделя без ответа, и это просто тянет вниз мой принять%.Спасибо.
У меня есть строго типизированная главная страница, которая содержит информацию, основанную на идентификаторе пользователя, прошедшего аутентификацию в настоящее время:
(Guid)Membership.GetUser().ProviderUserKey
Любое другое обычное действие / представление требует аутентификации пользователя.до его просмотра, что означает, что информация о пользователе гарантированно будет доступна.
Проблема в том, что я получаю исключения с нулевой ссылкой, только когда пытаюсь получить доступ к информации пользователя.с главной страницы сайта.Я предполагаю, что это потому, что нет такой вещи, как атрибут [Authorize], который применяется к главным страницам.
Я ошибаюсь?Есть ли другая возможная причина?
Простой пример:
На всех страницах моего сайта используется объект модели представления, который наследует модель представления главной страницы:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<Models.MasterViewModel>" %>
прошедший проверку подлинностиПользовательский объект является свойством этой модели базового представления.Все страницы требуют аутентификации, поэтому любой, кто не работает, перенаправляется в представление входа в систему, которое работает безупречно.Таким образом, простая попытка использовать свойство пользователя в представлении выглядит так:
<%= Model.UserName %>
, который я добавлю в одно из представлений, а также в главное представление сайта.
Когда пользователь уже прошел аутентификацию, все работает так, как должно, с именем пользователя, напечатанным дважды на странице.Когда срок действия авторизационного билета истек или новый пользователь пришел, однако, страница не будет перенаправлена на вход в систему, а вместо этого сгенерирует исключение, которое жалуется на нулевую ссылку, исходящую из <% = Model.UserName%> в главном представлении.
Когда я удаляю <% = Model.UserName%> из основного представления и оставляю его в обычном представлении, он перенаправляется как следует, не выдавая ошибку.
Iнадеюсь, что это несколько яснее.
Редактировать:
Может быть, кто-то мог бы предложить лучший способ доступа к информации аутентифицированного пользователя на главной странице?
Редактировать # 2:
Мне было бы очень интересно увидеть любой пример того, как информация аутентифицированного пользователя доступна на главной странице ... для меня это настоящая головная боль.
Обновление:
Я не принял ответ, потому что я хорошо знаю, как я могу проверить, аутентифицирован ли пользователь или нет.Мне любопытно узнать, почему не происходит перенаправление на страницу входа.