Webプロジェクトで簡単なエラー処理ページを作成する


アプリケーションにエラーが発生した場合、エラーページ処理をしていないと、敏感な情報が直接出力され、プロジェクトの物理的なパスが直接表示されることもあり、セキュリティが深刻に欠けています.また、エラーの種類が多く、ページスタイルが異なり、ユーザーの体験が悪いため、Webプロジェクトでエラーページを作成し、エラー情報を友好的に提示する方法について説明します.
一、エラーページerrorを作成する.aspx、フロントコードは以下の通りです(実際の必要に応じて要素を追加できます):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="error.aspx.cs" Inherits="MES.Web.error" %>

<!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>
    <style type="text/css">
        .style1
        {
            width: 74px;
        }
        .style2
        {
            width: 79px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div align="center">
        <table style="height: 85px; width: 657px;">
            <tr>
                <td>
                    <img alt="system error" src="Images/errorpage.jpg" />
                </td>
            </tr>
            <tr>
                <td class="style2">
                    <asp:Label ID="lblMessage1" runat="server" Font-Names="    " Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style2">
                    <asp:Label ID="lblMessage2" runat="server" Font-Names="    " Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style2">
                    <asp:Label ID="lblMessage3" runat="server" Font-Names="    " Text=""></asp:Label>
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

 
二、グローバル処理ファイルにおけるApplication_Errorにエラー処理を加えたコードは次のようになります.
//                
            Exception objErr = Server.GetLastError().GetBaseException();
            string sError = "    :" + HttpContext.Current.Request.Url.ToString() + "    :" + objErr.Message + "    :               。";
            
            //       
            Server.ClearError();
            //     Session["ProError"]   ,    Application["AppError"]
            Application["AppError"] = sError;

            //     Response.Redirect
            System.Web.HttpContext.Current.Response.Redirect(HttpContext.Current.Request.ApplicationPath + "/error.aspx");

 
三、エラーページの初期化時に、エラー情報を出力します.
if (!IsPostBack)
            {
                if (Application["AppError"] != null)
                {
                    try
                    {
                        string msg = Application["AppError"].ToString();
                        msg = msg.Replace("\"", "");
                        lblMessage1.Text = msg.Substring(0, msg.IndexOf("    "));
                        lblMessage2.Text = msg.Substring(msg.IndexOf("    "), msg.IndexOf("    ") - msg.IndexOf("    "));
                        lblMessage3.Text = msg.Substring(msg.LastIndexOf("    "));
                    }
                    catch (Exception ex)
                    {
                        lblMessage1.Text = ex.Message;
                    }
                }
            }

以上の手順でエラーページの構成を完了するほか、Webを介してもよい.コンフィグ構成エラーページ、プレビュー効果は以下の通りです.