HTTPステータスコード

asp.net デバッグ、トレース、例外処理

  • debug機能
    1. debug機能を使用する場合は、web.configのcompilationセクションのdebug属性をtrueにする。運用時はfalseにする。
  • トレース機能
    1. ページのトレースを有効にするには 、.aspx ファイルの先頭に @ Page ディレクティブを記述します。Trace 属性を指定し、この属性の値を true に設定します。
    2. ASP.NET アプリケーションのトレースを有効にするには、web.configのsystem.webセクション内にtraceセクションを追加する(詳細はMSDN)。すべてのページの末尾にトレースデータが出力されるようになる。
    3. HttpContext.Current.Trace.Write() または HttpContext.Current.Trace.Warn()命令を利用すると、トレースデータを追加出力することができる。(web.config上のスイッチを切り替えるだけ画面上への出力をオフにすることができる、運用系の場合でも特に取り除く必要はない)
  • 例外処理
    1. 例外が発生した場合、try-catchによるハンドリングを行わない。
    2. ユーザーアプリケーション側で例外がハンドリングされないと、最終的にASP.NETランタイムがこれを補足し、後処理を行うようになっている。
    3. このため、例外処理についてはASP.NETランタイムの例外処理機能を利用し、個々のページでは例外処理を行わない。
    1. web.configファイルにおいて、customErrorsセクションの設定すると、例外発生時にクライアントブラウザに表示する画面を別画面に切り替えることができる。カスタムエラーページへの差し替え機能は、内部的にResponse.Redirectと同じ仕組みで動作している。このため例外情報は途中で消失する。リダイレクト先のWebページ上では、例外情報を表示したりロギングしたりすることはでいない。例外情報をロギングするためには集約エラーハンドルを利用する。
    2. 集約エラーハンドラは、ASP.NETの未処理の例外を補足すると、どのページで例外が発生した場合でも、global.asaxファイル内のApplication_Error関数を呼び出す。この中で例外発生時処理を一箇所にまとめた形で実装することができる。
    1. 有効期限を設定した場合は有効期限が切れるかCookieが削除されるまで値を保持する
    2. 有効期限を設定しない場合はブラウザが終了するまで値を保持する
//Cookie設定、明日まで有効
HttpCookie cookie = new HttpCookie("userInfo");
cookie.Values["userName"] = "who";
cookie.Values["lastVisit"] = DateTime.Now.ToString();
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);

//Cookie取得
if (Request.Cookies["userInfo"] != null)
{
    HttpCookie cookie = Request.Cookies["userInfo"];
    string userName = cookie["userName"].ToString();
    string lastVisit = cookie["lastVisit"].ToString();
}
  • Session
    1. 画面遷移にまたがって保存しておく必要がある引継ぎデータに使用
    2. 巨大なデータを格納してはならない
    3. シリアル化ができないデータを格納してはならない
    4. 不要になったデータは手作業で削除しなければならない
    5. 必要に応じてセッションのタイムアウト値を調整する
    6. ASP.NET のセッションの有効期限の初期値は20分。web.config で変更可能。
//Session変数設定
Session["S_DATA"] = "TestData";

//Session変数取得
string s_data = (string)Session["S_DATA"];
  • ViewState
    1. 同一画面内でのみ保存しておく必要がある一時的なデータに使用
//ViewState変数設定
ViewState["V_DATA"] = "TestData";

//ViewState変数取得
string v_data = (string)ViewState["V_DATA"];
  • クエリ文字列
//遷移元ページ
<html>
    <head></head>
    <body><a href="zzz.aspx?p1=set?p2=ar">Jump</a></body>
</html>
	
//クエリ文字列取得
string q_data = Request.QueryString["p1"];