2011-12-23 10 views
2

下nullである:HttpContext.Current.Userは、web.configファイルでWindows認証(統合パイプライン)

<configuration> 
    <authentication mode="Windows"> 
    </authentication> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
</configuration> 

のglobal.asaxに

protected void Application_AuthenticateRequest(object sender, EventArgs args) 
{ 
    tracker.LogRequest(HttpContext.Current.User, DateTime.Now) 
    ///THIS IS ALWAYS NULL!!! 
} 

私は本当にこのことで混乱しています、任意のアイデア?

答えて

3

これは間違ったイベントでリッスンする症状だと思います。あなたはおそらくApplication.PostAuthenticateRequestを聞いてください。

コード

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 

出力

:私はそれがユーザーオブジェクトが何もないかどうか尋ねるために私のローカルドメインのActive Directoryに対して認証を持ってプロジェクトを使用してコードのサンプル片を実行

認証リクエスト:True

ポスト認証要求:偽

PostAuthenticateRequestイベントに続いて、HttpContext.Current.User.Identityプロパティが認証されていない要求のためSystem.Security.Principal.GenericIdentityのインスタンスです。

+0

は奇妙PostAuthenticateRequestにフックしようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」の収率で【とNullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていない] System.Web.PipelineStepManager.ResumeSteps(例外エラー)1116 System.Web.HttpApplication.BeginProcessRequestNotification(のHttpContextコンテキスト、AsyncCallbackのCB)89 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR、のHttpContextコンテキスト)189 – lostinplace

+0

私はの源であるとは思いませんこのコードは私のワークメイトのPCの1台で動作していたので問題はあります – lostinplace

+0

私が行った簡単なテストによるとはありません。認証されていないコンテキストには、ポスト認証イベントの後までUserオブジェクトがありません。上記のコードと結果を参照してください。 – lsuarez

関連する問題