1

ここでのシナリオは.aspx pages、いずれかのページでエラーが発生した場合、エラーページにリダイレクトされる場合が多くあります

Web.config:

<customErrors mode="On" defaultRedirect="customErrorPage.aspx">
       <error statusCode="404" redirect="Error404.aspx" />
</customErrors>

404 エラーが発生した場合は、正常にError404.aspx動作するようにリダイレクトされます。

しかし、他のエラー(禁止、接続が失われた、サービスが利用できないなど) がある場合は、にリダイレクトしたいと思いcustomErrorPage.apsxます。

カスタム エラー ページが表示されたときにエラー情報 (エラー ページ名、エラー statusCode) を記載したメールを送信したいと考えていますlogin.aspx

私は試しました(動作しません)

void Application_Error(object sender, EventArgs e) 
{ 
        ex = (HttpException)Server.GetLastError();
        int errorcode = ex.GetHttpCode();
  //    Response.Redirect("Errorpage.aspx?id='" + errorcode + "'&msg='" + message + "'");
}

カスタム エラー ページ

protected void Page_Load(object sender, EventArgs e)
{
         getUrl = HttpContext.Current.Request.Url.ToString();
        // string error=  HttpContext.Current.Error.ToString();
        //   HtmlMeta meta = new HtmlMeta();
       //   HtmlHead head = (HtmlHead)Page.Header;
        // meta.HttpEquiv = "refresh";
        //   meta.Content = "10;   url=Login.aspx";
        //  head.Controls.Add(meta);
}

protected void Page_UnLoad(object sender, EventArgs e)
{
       //send mail function
       Email.Send("abc@asa.com", "Error Log", "custom error", true);
}

また、これに対する他の良い方法があるかどうか教えてください

4

2 に答える 2

3

ここで私がどのように解決したか:

グローバル.asax:

 void Application_Error(object sender, EventArgs e) 
    {
        Exception objErr = Server.GetLastError().GetBaseException();
        string err = "<br><b>Error in: </b>" + Request.Url.ToString() +
            "<br><b>Error Message: </b>" + objErr.Message.ToString() +
            "<br><b>Stack Trace:</b><br>" + objErr.StackTrace.ToString();
       //Email sending method
       Email.Send("example@gmail.com", "Error", err, true);
    }

Web.config:

<customErrors mode="Off" defaultRedirect="Customerrorpage.aspx">
      <error statusCode="404" redirect="Error404.aspx" />
</customErrors>

Customerrorpage.aspx : (数秒でログイン ページに自動リダイレクトされます)

protected void Page_Load(object sender, EventArgs e)
    {
        Response.AppendHeader("Refresh", "4; url=Login.aspx");
    }
于 2012-08-29T10:24:56.920 に答える
0

これにはELMAHを使用することをお勧めします。これは、未処理の例外をログに記録するために構築されたものです (また、他の例外をキャプチャするように通知することもできます)。

例外の詳細を電子メールで送信するなど、構成ごとに異なる nuGet パッケージがいくつかあります。

多くのデータをキャプチャし、非常に読みやすい方法でフォーマットします。

于 2012-08-04T10:46:57.780 に答える