この問題はthisポストに関連しているようですが、スレッドから解決策を推測できませんでした。私はいくつかのことを疑問に思ってFormsAuthentication.SignOut throw NullReferenceException
protected void Session_End(object sender, EventArgs e)
{
try
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
//if (this.Context.Handler is IRequiresSessionState || this.Context.Handler is IReadOnlySessionState)
//{
// FormsAuthentication.SignOut();
// FormsAuthentication.RedirectToLoginPage();
//}
}
catch (Exception ex)
{
this.GetType().GetLogger().Error(ex);
}
}
:
は、私は(例外を食べていたログファイルに注目した後に)私は、継承されたアプリケーションでこのコードを気づきました。まず、SignOutがnull参照例外を投げる方法は?それは例外的なケースですか、私は私のプログラムに本質的に間違って何かをしていますか?次に、この例外がスローされる前に、この例外を突き止めるために何をテストする必要がありますか?15:51:57,288 [13]エラーASP.global_asax - System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 MvcApplication.Session_End
でSystem.Web.Security.FormsAuthentication.SignOutで ()
おかげ
ああ...私はそれらの行に沿って何かを読んでいましたが、私は別の言葉でそれを読むまで理解しませんでした。それは、私はHttpContext.Currentの存在を検証する必要がありますか、エラーメッセージを食べることはSession_Endが発生したときの 'ランダム性'を処理するための受け入れ可能な手段ですか? –
@Sean認証クッキーを削除するには 'Session_End'を使うべきです。それは別の目的を果たしており、あなたはそのコンテキストでサーバーサイドのものにアクセスすることしか想定できません。それに、なぜあなたは最初にそれを必要としますか?クッキーが期限切れになるようにするには、タイムアウトを設定することで期限切れにしてください。 –
あなたの編集をお読みください。ありがとう。 –