В настоящее время я работаю над ASP.NET-приложением, которое включает регистрацию пользователей с использованием проверки подлинности Windows. Это приводит к тому, что HTTPContext.User и Thread.Principal будут установлены с теми же учетными данными, что и пользовательский журнал, в котором ожидается поведение, в то время как WindowsIdentity остается как пользователь IIS .NET AppPool.Почему IIS, кажется, поднимает WindowsIdentity одного запроса из AppPool на мою учетную запись пользователя?
Недавно я заметил в журналах приложений, что, как представляется, один запрос (как правило, 5-й-й запрос при загрузке страницы), где WindowsIdentity запускается как пользователь IIS, но заканчивается тем, что он повышен до пользователя, который вход в систему.
Это происходит только тогда, когда пользователь обращается к корневому пути (например, http://localhost/). Если я укажу любой другой точный путь, такой как http://localhost/index.aspx, этот запрос не появляется, и WindowsIdentity никогда не изменяется.
Просматривая (довольно большую) кодовую базу, я могу найти только один метод, который олицетворяет WindowsIdentity, но этот метод не вызывается отдельно от конкретных обстоятельств на определенной странице.
Мне было интересно, почему это может произойти, и если есть какая-то причина, по которой IIS может делать это сама по себе.
Не имеет значения, является ли пользователь администратором или нет. URL http: // localhost/должен просто использовать документ по умолчанию (http: //localhost/index.aspx) и отправить его вместо этого. Я пытаюсь выяснить, является ли это то, что делает IIS (либо намеренно, либо как побочный эффект), или если это что-то специфичное для кода. – ChrisPatrick