Проблемы с использованием областей, не уверен, что что-то не так с настройками маршрутизации или web.config - PullRequest
0 голосов
/ 05 октября 2011

Вопрос описан нижеприведенными шагами.

  1. Создание нового веб-приложения ASP.NET MVC3 с использованием шаблона интернет-приложения.
  2. Украсьте класс HomeController с помощью Авторизации.
  3. Запустите приложение, оно в основном занимает у вас http://localhost: 51578 / Account / LogOn? ReturnUrl =% 2F. Пока все хорошо.

Давайте настроим пару вещей в этом проекте.

  1. Добавьте область с именем «Логин» в этом решении и переместите AccountController.cs, AccountModel.cs и всю папку Account в Viewer в соответствующую папку в этой области с именем Login.
  2. Запустите приложение сейчас, и вы получите следующую ошибку

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: представление «LogOn» или его мастер не найдены, или никакой движок представления не поддерживает найденные местоположения. Были найдены следующие места: ~ / Views / счета / Logon.aspx
~ / Views / Account / LogOn.ascx
~ / Views / Shared / Logon.aspx
~ / Views / Shared / LogOn.ascx
~ / Views / Account / LogOn.cshtml
~ / Views / Account / LogOn.vbhtml
~ / Views / Shared / LogOn.cshtml
~ / Views / Shared / LogOn.vbhtml

Нужно ли что-нибудь изменить в web.config или в маршрутизации, чтобы это работало?

1 Ответ

1 голос
/ 05 октября 2011

Атрибут authorize перенаправляет вас на страницу LogOn, которую невозможно найти в папке View, которая находится за пределами области Login. Если вы переместите HomeController в области входа в систему и в LoginRegisterArea, вы добавите действительный маршрут к домашнему контроллеру, он будет работать.

Я пытался сделать то, что вы хотели, но единственное решение, которое я нашел, было иметь контроллеры, которые вы хотите авторизовать, и представление LogOn в одном месте. Решение, которое я ранее упомянул о раздельном доступе к контроллеру и представлению LogOn, не работает.

Может быть, кто-то найдет решение, которое достигнет того, чего вы действительно хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...