Ошибка HTTP 404.15 - не найден... потому что строка запроса слишком длинная
Я проверил много сообщений об этой ошибке, но пока не смог исправить эту проблему.
У меня есть простой веб-сайт MVC5, встроенный в VS2013, работающий под управлением Windows 8 pro. Когда сайт был создан, был выбран вариант для отдельных учетных записей. Теперь мне нужно включить проверку подлинности Windows, чтобы только пользователи учетной записи AD могли использовать веб-сайт, а также авторизацию, чтобы я мог ограничить доступ к определенным представлениям/контроллерам определенным группам AD.
Выбрав веб-проект в VS, я обновил окно свойств (F4), чтобы анонимная аутентификация была отключена, а для проверки подлинности Windows установлено значение "Включено".
Теперь web.config для проекта содержит следующие разделы:
<system.web>
<authentication mode="Windows" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthenticationModule" />
</modules>
</system.webServer>
Я получаю доступ к сайту из IIS или F5. Я получаю сообщение об ошибке: Ошибка HTTP 404.15 - Не найдено
Модуль фильтрации запросов настроен на отказ от запроса, когда строка запроса слишком длинная. Я заметил, что что-то зациклилось, чтобы дать ReturnUrl, который является повторяющейся длинной конкатенацией внутри строки запроса.
В разделе IIS\Authentication я отключил функцию "Анонимная аутентификация", "Импровизация ASP.Net" и "Аутентификация форм". В разделе "Правила авторизации IIS.Net" я запретил "Анонимные пользователи" и "Разрешить всем пользователям"
Где я иду не так?
Ответы
Ответ 1
Единственный раз, когда я лично сталкивался с этой проблемой, я случайно добавил [Authorize]
к дочернему действию, которое использовалось в макете. Добавление [Authorize]
в действие вашего знака будет иметь такой же эффект или просто пренебречь добавлением [AllowAnonymous]
в действие вашего знака, когда на контроллере он находится [Authorize]
. Длинные и короткие, это вызвано чем-то, требующим авторизации на странице фактического знака, что затем заставляет вас перенаправляться на страницу входа в систему, для которой требуется авторизация, что приведет к перенаправлению на страницу входа и т.д.
ТЛ; дг
- Убедитесь, что ваш вход/действие входа не имеет
[Authorize]
.
- Убедитесь, что ваше действие входа/входа имеет
[AllowAnonymous]
.
- Убедитесь, что никакие дочерние действия, используемые на вашем макете или странице входа, не имеют
[Authorize]
или имеют [AllowAnonymous]
, если они находятся в контроллере, украшенном [Authorize]
.
Ответ 2
Я получил эту ошибку, когда активировал проверку подлинности Windows. Я хотел авторизовать пользователя на основе входа в систему Windows, и мне не нужна страница входа в мое приложение.
Я исправил ошибку, добавив ниже в свой файл веб-конфигурации.
Ответ 3
У вас может быть функция при запуске, которая перенаправляет вас на страницу входа. Вы должны отключить это.
Я создал проект методом аутентификации по умолчанию, который создает контроллер аккаунта и его зависимости. Когда я изменил метод аутентификации на Windows, упомянутая ошибка возникла.
Для решения этой проблемы я закомментировал функцию ConfigureAuth(app)
в моем файле Startup.cs.
Ответ 4
У меня была та же проблема.
Проверьте свойства проекта..
Anonymous Authentication=False
Windwos Authentication=True