#asp.net-mvc-3
#asp.net-mvc-3
Вопрос:
У меня есть область, определенная в проекте MVC с именем Account, и в представлениях в этой области у меня есть Logon.cshtml. В web.config я получил следующее
<authentication mode="Forms">
<forms loginUrl="~/Areas/Account/LogOn" timeout="600" />
</authentication>
Я использую атрибут авторизации на своих контроллерах, но когда я запускаю проект, получаю следующую ошибку
Ошибка сервера в приложении ‘/’.
Ресурс не может быть найден.
Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, его имя было изменено или временно недоступен. Пожалуйста, просмотрите следующий URL-адрес и убедитесь, что он написан правильно.
Запрошенный URL: /Areas/Account/LogOn
Есть идеи, что я делаю не так?
Комментарии:
1. Имя вашей области называется «Области»?
2. Когда вы добавляете область в MVS, по умолчанию добавляется папка с именем «Areas», и все добавляемые вами области попадают в эту папку «Areas». Созданная мной область называется «Учетная запись». Таким образом, физически все файлы находятся в разделе «Области Учетная запись» .
3. Область называется «Учетная запись»? Это странно, потому что обычно уже есть контроллер с именем
AccountController
. ИLogOn
звучит как действие , а не контроллер .
Ответ №1:
Хотя файлы хранятся в папке с именем Area
, это не означает, что маршрутизация к этому файлу /areas/account/logon
.
Просмотрите AccountAreaRegistration.cs
в папке учетной записи. AreaName
Определенный в этом файле (скорее всего Account
) является начальной частью маршрута к области. Кроме того, context.MapRoute
линия будет иметь маршрут по умолчанию для вашей области.
По всей вероятности, особенно если вы не редактировали файл регистрации области, правильный путь для ввода в web.config ~/account/logon
.