おのれ鍋奉行が!

デバッグ用画面出力

最終更新:

lmes2

- view
管理者のみ編集可

デバッグ用画面出力


概要

Dictionaryオブジェクトを使用して、Session変数やGET・POST等を、画面に表示するクラス。

※Dictionaryオブジェクトに対して、任意にキーと値を追加できるので、ウォッチ式で監視するのがめんどうになるくらい常に確認したい変数等を登録しとくのが主用途。

前提条件


手順

default.aspx.cs を以下のように変更。

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
 
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // デバッグ用画面出力
        {
            DispData.Initialize();
 
            DispData.SetSession(Session);
            DispData.SetHttpRequest(Request);
            DispData.SetHttpApplicationState(Application);
 
            GridView1.DataSource = DispData.GetInstance();
            GridView1.DataBind();
 
            //トレース情報を出すにはこっち
            //HttpContext.Current.Trace.IsEnabled = true;
        }
    }
}
 

default.aspx を以下のように変更。
GridViewをひとつ置いただけ。

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>無題のページ</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
 
    </div>
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
    </form>
</body>
</html>
 

class1.cs(ユーザー定義クラス)を以下のように変更。
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.SessionState;
using System.Collections.Generic;
 
/// <summary>
/// Dictionaryオブジェクトを使用したデバッグ用画面出力
/// </summary>
public sealed class DispData
{
 
    private static Dictionary<string, string> _dd = new Dictionary<string, string>();
 
    /// <summary>
    /// 自分自身を返す
    /// </summary>
    /// <returns></returns>
    public static Dictionary<string, string> GetInstance()
    {
        return _dd;
    }
 
    /// <summary>
    /// 初期化
    /// </summary>
    public static void Initialize()
    {
        _dd.Clear();
    }
 
    /// <summary>
    /// 同名のキーを削除してから登録
    /// </summary>
    /// <param name="str_key"></param>
    /// <param name="str_value"></param>
    public static void ContainsAdd(String str_key, String str_value)
    {
        _dd.Remove(str_key);
        _dd.Add(str_key, str_value);
    }
 
    /// <summary>
    /// セッションオブジェクトからキー名を元に値を取得
    /// </summary>
    /// <param name="session_temp">セッションオブジェクト</param>
    public static Boolean SetSession(System.Web.SessionState.HttpSessionState session_temp)
    {
        try
        {
            DispData.ContainsAdd("■Session ここから", " ");
            foreach (String str_key in session_temp.Keys)
            {
                String str_value = session_temp[str_key].ToString();
 
                DispData.ContainsAdd(str_key, str_value);
            }
            DispData.ContainsAdd("■Session ここまで", " ");
        }
        catch
        {
            return false;
        }
        return true;
    }
 
    /// <summary>
    /// HttpRequestを取得
    /// </summary>
    public static Boolean SetHttpRequest(HttpRequest request_temp)
    {
        try
        {
            DispData.ContainsAdd("■HttpRequest ここから", " ");
 
            foreach (String str_key in request_temp.Params.AllKeys)
            {
                String str_value = request_temp.Params[str_key];
 
                DispData.ContainsAdd(str_key, str_value);
            }
 
            DispData.ContainsAdd("■HttpRequest ここまで", " ");
        }
        catch
        {
            return false;
        }
        return true;
    }
 
    /// <summary>
    /// HttpApplicationStateを取得
    /// </summary>
    public static Boolean SetHttpApplicationState(HttpApplicationState applicationState_temp)
    {
        try
        {
            DispData.ContainsAdd("■HttpApplicationState ここから", " ");
            foreach (String str_key in applicationState_temp.Keys)
            {
                String str_value = applicationState_temp[str_key].ToString();
 
                DispData.ContainsAdd(str_key, str_value);
            }
            DispData.ContainsAdd("■HttpApplicationState ここまで", " ");
        }
        catch
        {
            return false;
        }
        return true;
    }
}
 
記事メニュー
目安箱バナー