0

ひねりを加えた独自のカスタム エラー ページを作成してみました。(オリジナルのものは何もありません) 基本的に、カスタム エラー ページが表示されると、エラーの URL が取得され、その人のユーザー名がログインされて、短い SMTP 電子メールが送信されます。実際にはうまく機能していますが、テストしたページでこれらの電子メールを狂った時間に受け取っており、何も問題はありません. このカスタム エラー ページが呼び出された理由に関する情報を取得して、問題を解決できるようにしたいと考えています。

このページを強化してより多くの情報を提供できるように、誰か推奨事項を教えてください。

 protected void Page_Load(object sender, EventArgs e)
    {
        string url = HttpContext.Current.Request.Url.AbsoluteUri;
        string DATETIME = DateTime.Now.ToString();
        string UserName = HttpContext.Current.User.Identity.Name.ToString();

        string fileName = Server.MapPath("_TextFiles/error.txt");
        string mailBody = File.ReadAllText(fileName);

        mailBody = mailBody.Replace("##url##", url);
        mailBody = mailBody.Replace("##DATETIME##", DATETIME);
        mailBody = mailBody.Replace("##UserName##", UserName);

        MailMessage myMessage = new MailMessage();
        myMessage.Subject = "Response from ";
        myMessage.Body = mailBody;

        myMessage.From = new MailAddress("*******n.com", "******");
        myMessage.To.Add(new MailAddress("*********.com", "******"));

        SmtpClient mySmtpClient = new SmtpClient();
        mySmtpClient.Send(myMessage);

    }

テキスト ファイルなので、混乱することはありません。

Hello,

Response from Error.aspx


An error occured on page ##url##

at ##DATETIME##


Username: ##UserName##
4

1 に答える 1

2

サイトの基本的な設定は同じですが、方法を少し変更する必要があります。エラーページからメールを送信すると、例外は利用できなくなります。これが私がすることです...

クラスを拡張し、メソッドを次のようにSystem.Web.UI.Pageオーバーライドします。OnError

protected override void OnError(EventArgs e)
{
    base.OnError(e);

    System.Exception ex = Server.GetLastError();
    Log.LogError("Error in Supr.CMS.Types.SuprPage", ex, Log.LogLevel.HandledExceptionFatal);
}

現在、これをすべてのページの基本クラスとして使用しており、すべてのエラーについて完全な詳細が通知されます。例外メッセージ、スタック トレース、一部のユーザー情報 (IP アドレスと UserAgent を含む)、Cookie コレクション、セッション コレクション、フォーム コレクション、キャッシュ コレクションを含めて、ユーザーがエラーに遭遇したときのサイトの状態を可能な限り把握しています。 (ここに投稿するには少し多すぎます)。

別のメモ...多くのエラーはボットによって生成され、IP や UserAgent などの情報があれば、それを分析してリクエストのブロックを強化できます。

于 2012-08-28T18:39:50.820 に答える