我们的代码依赖于检查 Global.asax Application_AuthenticateRequest(...) 方法中的 Context.User.Identity 值来检索有关登录用户的一些信息。这在经典模式下工作正常,但是当我翻转 IIS 以使用集成管道时,“Context.User”返回为空,但只是间歇性的。任何想法为什么?
我在虚拟目录中启用了 < authentication mode="Windows"> 并且仅启用了 Windows 身份验证。
我们的代码依赖于检查 Global.asax Application_AuthenticateRequest(...) 方法中的 Context.User.Identity 值来检索有关登录用户的一些信息。这在经典模式下工作正常,但是当我翻转 IIS 以使用集成管道时,“Context.User”返回为空,但只是间歇性的。任何想法为什么?
我在虚拟目录中启用了 < authentication mode="Windows"> 并且仅启用了 Windows 身份验证。
集成模式意味着 ASP.NET 的管道事件与 IIS 管道同时运行,这意味着: 1)在经典模式下 - ASP.NET 中的 AuthenticateRequest 在 IIS 已经完成身份验证之后运行(使用 Windows auth也许或基本等),因此您将获得用户身份设置。2)在 IntegratedMode - AuthenticateRequest 将在两者“同时”运行,这将导致它在那里有一个空值。如果您想可靠地获得用户身份,您应该考虑使用 PostAuthenticateRequest(当然前提是您启用了身份验证模块)