5

例外が発生したときに例外を表示するエラー メッセージ ページを作成しようとしています。エラー メッセージ ページには、例外が発生した前のページに戻るための戻るボタンがあります。

エラーページをリダイレクトするために使用されるコードは次のとおりです。

protected void btnAssign_Click(object sender, EventArgs e)
{
    try
    {
        SqlDataSource3.Insert();
    }
    catch (Exception ex)
    {
        Session["Exception"] = ex;
        Response.Redirect("~/ErrorMessage.aspx", false);
    } 
}

ここに私のglobal.asaxファイルのコードがあります

void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs
    Exception ex = Server.GetLastError().InnerException;
    Session["Exception"] = ex;
    Response.Redirect("~/ErrorMessage.aspx");
}

これが errorMessage ページのコードです。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Exception ex = (Exception)Session["Exception"];
            Session.Remove("Exception");
            Literal1.Text = "<p style='color:blue'><b>An unrecoverable error has occurred:</b></p><br /><p style='color:red'>" + ex.Message + "</p>";
        }  
    }
    protected void btnReturn_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/IncidentAssignment.aspx");
    }

割り当てボタンをクリックすると、errorMessage ページが開き、例外が表示されますが、戻るボタンをクリックすると、プログラムがクラッシュし、global.asax ファイルが指定され、blew に示すように、このコンテキストではセッション状態が利用できないと表示されます。 ここに画像の説明を入力

session["exception"] が Null である理由がわかりません。誰かが私の質問に答えてくれれば幸いです。ありがとう。

4

3 に答える 3

6

セッションオブジェクトが初期化されていない可能性があるアプリケーションエラーイベントでセッション状態にアクセスしようとしています。アプリケーション全体を参照しているため、アプリケーションの他の場所でエラーがスローされる可能性があります。

通常、これは、スローされたエラーがアプリケーションの初期段階にあり、セッション オブジェクトが初期化されていない場合に発生します。Begin_Request イベントで。

セッション オブジェクトにアクセスする前に null チェックを行うことができます。

すなわち

if (HttpContext.Current.Session != null) { //do your stuff}
于 2013-02-22T04:50:01.513 に答える
1

内にあるコード行を使用する代わりに:

protected void btnReturn_Click(object sender, EventArgs e)
{
    Response.Redirect("~/IncidentAssignment.aspx");
}

それを完全に取り除き、ボタンの HTML コードに次のコード行を追加します。

PostBackUrl="insert your path here"

したがって、開始したページに戻る必要があります。

于 2013-02-22T04:45:30.680 に答える
0

web.config でエラー ページを定義すると、エラー ページで次の例外にアクセスできます。

HttpContext.Current.AllErrors

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/ErrorPage.aspx">
</customErrors>
于 2013-08-06T08:25:20.923 に答える