Asp.net HttpContext.Current.User在windows身份验证(集成管道)下为空
在web.config中:Asp.net HttpContext.Current.User在windows身份验证(集成管道)下为空,asp.net,asp.net-mvc,iis-express,Asp.net,Asp.net Mvc,Iis Express,在web.config中: <configuration> <authentication mode="Windows"> </authentication> <authorization> <deny users="?" /> </authorization> </configuration> 我真的被这搞糊涂了,有什么想法吗?我认为这是听错了事情的征兆。你可能应该
<configuration>
<authentication mode="Windows">
</authentication>
<authorization>
<deny users="?" />
</authorization>
</configuration>
我真的被这搞糊涂了,有什么想法吗?我认为这是听错了事情的征兆。你可能应该听听我的意见 使用我拥有的项目运行一段示例代码,该项目根据本地域的Active Directory进行身份验证,以询问用户对象是否为空: 代码
Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
Debug.WriteLine("Authenticate Request: " & (HttpContext.Current.User Is Nothing))
End Sub
Sub Application_PostAuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
Debug.WriteLine("Post-authenticate Request: " & (HttpContext.Current.User Is Nothing))
End Sub
输出
验证请求:True
后验证请求:False
在
PostAuthenticateRequest
事件之后,HttpContext.Current.User.Identity
属性是未经身份验证请求的一个实例。奇怪的是,任何连接到PostAuthenticateRequest的尝试都会产生一个“未设置为对象实例的对象引用”[NullReferenceException:对象引用未设置为对象的实例。]System.Web.PipelineStepManager.ResumeSteps(异常错误)+1116 System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext上下文,AsyncCallback cb)+89 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext上下文)+189我不认为这是问题的根源,但是根据我做的一个简短的测试,这段代码已经在我同事的一个PCsNot上运行。未经身份验证的上下文在后身份验证事件之后才有用户对象。参见上面的代码和结果。嗯,听起来不错,尽管我仍然无法连接到后身份验证没有崩溃。是否有人提醒您没有与异常相关的代码?此外,(这有点像是瞎猜),您的global.asax原型是否遵循约定:void Application\u PostAuthenticateRequest(object sender,EventArgs e)
?
Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
Debug.WriteLine("Authenticate Request: " & (HttpContext.Current.User Is Nothing))
End Sub
Sub Application_PostAuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
Debug.WriteLine("Post-authenticate Request: " & (HttpContext.Current.User Is Nothing))
End Sub