IIS7集成管道模式:对于Windows身份验证,Context.User间歇性地为空

And*_*dyV 2 asp.net iis-7 windows-authentication integrated-pipeline-mode

我们的代码依赖于检查Global.asax Application_AuthenticateRequest(...)方法中的Context.User.Identity值来检索有关登录用户的一些信息.这在经典模式下工作正常但是当我翻转IIS以使用集成管道"Context.User"返回为null时,但只是间歇性地返回.有什么想法吗?

我有<authentication mode ="Windows">并且只在虚拟目录中启用了Windows Auth.

Car*_*res 5

集成模式意味着ASP.NET的管道事件与IIS管道同时运行,这意味着:1)在经典模式下 - ASP.NET中的AuthenticateRequest在IIS已经进行身份验证后运行(使用Windows身份验证)也许或基本等等,所以你会得到用户身份.2)在IntegratedMode中 - AuthenticateRequest将在两个"同时"运行,这将导致它在那里有一个null.如果您想要可靠地获取用户身份,您应该考虑使用PostAuthenticateRequest(当然,前提是您已启用身份验证模块)