2015-02-26 2 views
1

Я обновил старый проект, содержащий файлы .asmx от MVC 3 до MVC 5, и теперь обработчик Application_AuthenticateRequest в Global.asax больше не видит все запросы. Он видит первоначальные запросы клиента, мой код возвращает 401 с запросом BASIC, но когда клиент отвечает набором заголовков Auth, Application_AuthenticateRequest никогда не получает второй запрос. Я использовал Fiddler, чтобы проверить это.Обновлено с MVC3 до 5, теперь Application_AuthenticateRequest больше не получает запросы auth'd

Кроме того, что-то - вероятно, MVC-каркас - добавляет собственный исходный код BASIC с помощью realm = 'localhost' в исходном ответе, поэтому исходный ответ моего приложения дважды содержит заголовок BASIC auth.

Как получить обработчик Application_AuthenticateRequest, чтобы снова увидеть все запросы, к которым он привык?

EDIT TO ADD: Я получаю такое же поведение в совершенно новом проекте MVC5. Но проблема возникает только для Local IIS; код отлично работает на IIS EXPRESS.

Я также пробовал свой код на новой установке сервера, настройки IIS которой являются нормальными. Тот же вопрос.

... Приложение_BeginRequest is называется оба раза, поэтому второй запрос делает это в приложении. Поэтому я предполагаю, что MVC5 добавил новую функцию, которая «помогает»?

+0

Используете ли фильтр '[Authorize]' 'непосредственно на контроллере или как глобальный фильтр? –

+0

Нет. Есть только один контроллер, и это в основном для heartbeat/debugging. –

+0

В разделе '' в файле web.config есть значение 'runAllManagedModulesForAllRequests' равное true? –

ответ

1

У вас есть базовая аутентификация отключена и анонимная проверка подлинности включена в IIS? IIS, вероятно, запретит ваш запрос. Если вы хотите выполнить собственный базовый auth, вам необходимо будет отключить базовую аутентификацию для IIS. Я собираюсь догадаться, поэтому в IIS выражается конфигурация этих 2 модулей isapi в IIS-express различна/отсутствует. Chris Marisic

0

Для всех запросов, я думаю, что вы хотели бы использовать Application_PostAuthenticateRequest вместо Application_AuthenticateRequest

+1

Если он не может достичь аутентификации для начала, как он может достичь PostAuthenticate? –