我目前正在开发一个涉及用户使用 Windows 身份验证登录的 ASP .NET 应用程序。这会导致 HTTPContext.User 和 Thread.Principal 都设置为使用与登录用户相同的凭据,这是预期的行为,而 WindowsIdentity 保持为 IIS .NET AppPool 用户。
我最近在应用程序日志中注意到,似乎有一个请求(通常是加载页面时的第 5 次请求),其中 WindowsIdentity 以 IIS 用户身份开始,但最终被提升为正在登录的用户。
这似乎只在用户访问根路径(例如http://localhost/)时发生。如果我指定任何其他确切路径,例如http://localhost/index.aspx,则此请求似乎不会发生,并且 WindowsIdentity 永远不会改变。
浏览(相当大的)代码库,我只能找到一种模拟 WindowsIdentity 的方法,但除了在特定页面上的特定情况下不会调用该方法。
我想知道为什么会发生这种情况,以及 IIS 是否有任何原因可能会自行执行此操作。