1

API ベースの Web サイトに取り組んでおり、クライアント側は .Net MVC で開発されています。例外処理のために、私は使用しています

 public void Application_Error(object sender, EventArgs e)
        {
            string action = "Index";
            Exception exception = Server.GetLastError();
            Response.Clear();

            HttpException httpException = exception as HttpException;

            if (httpException != null)
            {


                switch (httpException.GetHttpCode())
                {
                    case 404:
                        // page not found
                        action = "Error404";
                        break;
                    default:
                        action = "Index";
                        break;
                }

                // clear error on server
                Server.ClearError();
            }
            Response.Redirect(String.Format("/error/{0}", action));
        }

そのため、Controller からの try catch によって例外がスローされると、ページはエラー ページにリダイレクトされます。

セッションの有効期限が切れたときに、ログイン ページにリダイレクトするようにしたいのですが、どうすればよいですか?

現在、セッションの有効期限が切れた後、セッション値にアクセスしようとすると、例外 " object reference not set to an instance of object."がスローされます。次に、デフォルトのエラー ページにリダイレクトします。

4

1 に答える 1

3

あなたが言ったように、セッション変数が欠落していると単にNullReferenceException. コントローラーからセッション変数に対して null チェックを実行します。

Public ActionResult MyAction ()
{
    if (Session["myVariable"] == null)
    {
        RedirectToAction("SessionTimeOut", "Error");
    }

    ...

}

セッションが期限切れにならない限り常に存在する必要があるセッション変数がある場合はOnActionExecuting、コントローラーのメソッドをオーバーライドして、そこで null チェックを実行してみてください。複数のコントローラに対してこれを行うには、 を定義しBaseController、そのメソッドをオーバーライドしてOnActionExecutingから、これを他のコントローラに継承します。

于 2012-11-22T07:00:55.883 に答える