Подтвердить что ты не робот

Перенаправляется на неправильный loginUrl → учетная запись/логин вместо учетной записи/LOGON

У меня странная ошибка, с которой я никогда не сталкивался раньше.

Я установил контроллер с помощью

[Authorize(Roles = "admin")] 
public class LoggingController : Controller

Когда пользователь, не являющийся администратором, пытается получить доступ к любому защищенному контенту, он перенаправляется на:

http://localhost:50501/Account/Login?ReturnUrl=%2flogging

note: account/ login и NOT account/ logon

Действие AccountController.Login не существует.

web.config имеет:

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

Я могу, конечно, выполнить действие Login и перенаправить на Logon. Я просто озадачен и хотел бы знать, почему это происходит.

4b9b3361

Ответ 1

Найдите свой проект для входа в систему - он должен быть указан где-то. Есть ли другое значение web.config, переопределяющее это (возможно, глядя на дочерний корень и используемое родительское значение) Также есть ли переадресация, которая происходит? Существуют ли какие-либо настройки по умолчанию в вашем компьютере web.config? Является ли ваш url по умолчанию для проекта установленным как /login?

Установите поисковый отладчик маршрутов, чтобы узнать, какой маршрут используется для этой страницы.

ИЗМЕНИТЬ: Еще немного исследований дает известную проблему. Проверьте эту ссылку: Проблема ASP.NET MVC с настройкой раздела проверки подлинности форм

Theres ошибка в mvc 3 beta - вы используете бета-бит? Также обратите внимание на упомянутый элемент в вышеуказанном URL-адресе для бит RTM:

<add key="loginUrl" value="~/LogOn" />

Также проверьте http://forums.asp.net/p/1616153/4138366.aspx

РЕДАКТИРОВАТЬ 2

Ниже приведен подробный комментарий о потенциальном источнике этого из @santiagoIT (добавьте свой комментарий, пожалуйста, если вам помогут детали)

Сегодня я обнаружил корень этой проблемы: я добавил "развертываемую зависимость" на "Веб-страницы ASP.NET с синтаксисом Razor". Это добавляет ссылку на: WebMatrix.Data.dll. Эта сборка имеет класс со статическим конструктором, который выполняет следующие действия: static FormsAuthenticationSettings() {FormsAuthenticationSettings.LoginUrlKey = "loginUrl"; FormsAuthenticationSettings.DefaultLoginUrl = "~/Account/Login";} Это объясняет!

Ответ 2

Это сработало для меня, и я использую MVC 3

<appSettings>
    <add key="loginUrl" value="~/Account/LogOn" />
</appSettings>
<system.web>
    <authentication mode="Forms">
        <forms loginUrl="~/Account/LogOn" name=".ASPXFORMSAUTH" />
    </authentication>
</system.web>

Также я обнаружил, что добавление части followinf в веб-конфигурацию (только при отладке конфигурации) помогло ускорить мою отладку, как и для аутентификации на ЛЮБОЙ странице.

<authorization>
    <deny users="?" /> <!-- remove after debugging -->
</authorization>

Ответ 3

Просто удалите DLL WebMatrix, если они присутствуют в вашей папке с развернутым bin.

Ответ 4

Я исправил его таким образом

1) Перейти к IIS

2) Выберите проект

3) Нажмите "Аутентификация"

4) Нажмите "Анонимная аутентификация" > "Редактирование" > выберите "Идентификатор пула приложений" вместо "Конкретный пользователь".

5) Сделано.