Обновление: Я не могу удалить этот вопрос, потому что ответ был отменен, но это совсем не ответ на то, что я прошу. Я хотел бы удалить это, так как это была неделя без ответа, и это просто перетащить мой accept%. Благодарю.Основная страница ASP.NET MVC2 и аутентификация
У меня сильно типизированная главная страница, которая включает в себя информацию, которая основана на UserId в настоящее время одноразового пользователя:
(Guid)Membership.GetUser().ProviderUserKey
Все остальное нормальное действие/представление будет требовать от пользователя пройти проверку подлинности до его просмотра, что означает, что информация пользователя будет доступна.
Проблема заключается в том, что я получаю только нулевые ссылочные исключения при попытке получить доступ к информации пользователя. с главной страницы сайта. Я предполагаю, что это связано с тем, что атрибут [Авторизовать] не применяется к основным страницам.
Есть ли у меня это неправильно? Есть ли еще одна причина?
Простой пример:
различные страницы моего сайта все использовать вид модели объекта, который наследует модель представления страницы мастера:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<Models.MasterViewModel>" %>
опознанный объект пользователя является свойством этой базовой модели представления. Для всех страниц требуется аутентификация, поэтому любой, кто не является, перенаправляется в окно входа в систему, которое работает безупречно. Так простая попытка использовать собственность пользователя в представлении, таким образом:
<%= Model.UserName %>
который я помещу в одном из видов, а также в мастер зрения сайта.
Когда пользователь уже прошел аутентификацию, все работает так, как должно, при этом имя пользователя дважды печатается на странице. Когда истекает срок действия авторизационного билета или появляется новый пользователь, страница не будет перенаправляться на вход в систему, но вместо этого генерирует исключение, которое жалуется на нулевую ссылку, исходящую от <% = Model.UserName%> в главном представлении ,
Когда я удаляю <% = Model.UserName%> из главного представления и оставляю его в нормальном представлении, он перенаправляет, как следует, без выброса ошибки.
Надеюсь, это несколько более понятно.
Edit:
Может быть кто-то может предложить лучший способ получить доступ к информации, прошедшего проверку подлинности пользователя на главной странице?
Edit # 2:
Я был бы очень интересно посмотреть, любой пример Информация прошедшего аутентификацию пользователя осуществляется доступ в главной странице ... это реальная голова-скребок для меня.
Update:
Я не принял ответ, потому что я хорошо знаком с тем, как я могу проверить, является ли или не проходит проверку подлинности пользователя. Мне любопытно узнать, почему не происходит перенаправления на страницу входа в систему.
У меня есть атрибут [Авторизовать] на базовом контроллере, из которого наследуются все остальные контроллеры, и я считаю, что моя маршрутизация звучит. «Что-то еще не совсем на месте», было и остается тем, что, как я подозреваю, является причиной, я просто не могу его найти. Благодарю. – asfsadf
На главной странице нарушения добавьте строку <% = this.ViewContext%>, затем щелкните правой кнопкой мыши и «Точка останова» -> «Вставить точку останова». Затем проверьте ViewContext, укажите указатели, на которых был загружен View View. –
Я не могу понять это, чтобы спасти свою жизнь, но я собираюсь отметить это как «ответ» и двигаться дальше. Спасибо за помощь. – asfsadf