4

私はすべての例外を追跡し、データベースに必要な情報を書き込み、エラーを修正するためにエラーについて知る必要がある開発者に電子メールを送信するようにエラー処理を設定しています。私が遭遇した問題は、ページが完全に読み込まれる前にエラーが発生した場合です。この場合、追跡したいセッション変数はApplication_Errorで使用できません。したがって、エラー処理でエラーが発生しないように、次のことを行いますが、より良い方法が必要です。また、ページが読み込まれ、フォームの送信時にエラーが発生した場合は、セッション変数を使用できます。

try
{
    user_name = System.Web.HttpContext.Current.Session["User_Name"].ToString();
    user_number = System.Convert.ToInt32(System.Web.HttpContext.Current.Session["User_Number"].ToString());
}
catch (Exception ex)
{
    user_number = 0; 
    user_name = "N/A";     
}   

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

4

あなたがしていることには何の問題もありませんが、

if ( null != System.Web.HttpContext.Current.Session )

try-catch ブロックよりも「外科的」になります。

セッションは AcquireRequestState イベントまで初期化されないため、この時点より前にエラーが発生した場合、セッション変数は使用できません。

于 2009-03-21T03:46:01.550 に答える
0

これがあなたがする必要があることです。ユーザーは、ブックマークまたは URL を知ることで、任意のページに移動できます。したがって、値が設定される前に、ページがユーザーによって取得される可能性があります。これが、コードが壊れないようにするために必要なことです。

于 2009-03-21T03:40:58.970 に答える