2

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

我有<身份验证模式=“Windows”>并且只在虚拟目录中启用Windows身份验证。

+0

我建议检查这些请求的URL。也许他们是动态呈现的资源,就像框架自动渲染的WebResource.axd一样,从而绕过认证系统? – David 2010-05-19 16:28:46

回答

4

集成模式意味着ASP.NET的管道事件与IIS管道同时运行,意思是: 1)在经典模式 - ASP.NET中的AuthenticateRequest运行方式在IIS已经完成之后运行身份验证(使用Windows身份验证可能或基本等),所以你会得到用户身份设置。 2)在IntegratedMode - AuthenticateRequest将在“同一时间”运行,这将导致它在那里有一个null。你应该考虑使用PostAuthenticateRequest,如果你想可靠地获得用户身份(当然假设你有一个验证模块启用)

相关问题