2

Наш код основан на проверке значения Context.User.Identity в методе Global.asax Application_AuthenticateRequest (...) для получения некоторой информации о зарегистрированном пользователе , Это отлично работает в классическом режиме, но когда я переворачиваю IIS для использования Integrated Pipeline, «Context.User» возвращается как null, но только с перерывами. Любые идеи почему?IIS7 Itegrated Pipeline Mode: Context.User прерывается null для Windows Auth

У меня есть < режим аутентификации = «Windows»> и только Windows Auth включен в виртуальном каталоге.

+0

Я рекомендую проверить URL-адрес для этих запросов. Возможно, они предназначены для динамически отображаемых ресурсов для чего-то вроде WebResource.axd, автоматически создаваемого каркасом и, таким образом, обходя систему аутентификации? – David

ответ

4

Интегрированный режим означает, что события конвейера ASP.NET выполняются одновременно с конвейером IIS, что означает: 1) В классическом режиме - AuthenticateRequest в ASP.NET запускается после того, как IIS уже выполнил аутентификация (с использованием Windows auth, возможно, базового и т. д.), и поэтому вы получите идентификатор пользователя. 2) В IntegratedMode - AuthenticateRequest будет работать в то же время в обоих случаях, что приведет к тому, что он будет иметь нуль. Вам следует рассмотреть возможность использования PostAuthenticateRequest, если вы хотите надежно получить идентификатор пользователя (конечно, если у вас включен модуль аутентификации)

Смежные вопросы