ASP.Netエラー処理(エラージャンプページwebconfig)

4976 ワード

カスタムエラーページを使用すると、ユーザーに送信される共通のエラー情報は安全です.つまり、アプリケーションの秘密を脅かすことはありませんが、このような情報は面白くありません.ユーザーがこのような情報を永遠に見られないことを望んでいるかもしれません.逆に、リクエストの処理中にエラーが発生した場合は、自分の「カスタムエラーページ」を表示し、自分のブランドや特定のエラー情報を表示したいと考えています.ASP.NETアプリケーションでカスタムエラー情報を追加するのは簡単です.まず、任意のタイプのファイルであることができる独自のWebページを作成します.htm,.aspx,.asp、など.そしてアプリケーションのconfig.Webファイルでは、このファイルを指すように構成情報を変更します.例として、以下の構成情報は、所定の処理エラーが発生した場合、ブラウザが「ErrorPage.aspx」ページにリダイレクトされるべきであることを示しています.

  
    
< configuration >
< customerrors mode ="remoteonly" defaultredirect ="ErrorPage.aspx" />
</ configuration >

タグの「defaultredirect」プロパティは、エラーが発生した場合にユーザーがリダイレクトする「デフォルト」ページを定義します.あるいは、応答のhttpコード状態に応じて、このデフォルト値を他のページにリダイレクトして上書きすることもできます.たとえば、特殊な「ファイルが見つかりません」エラーページ、「不正アクセス」エラーページ、「サーバ競合」エラーページなどにリダイレクトします.たとえば、次の構成情報は、3つの特定のhttpステータスコードを上書きし、その他のエラーはすべてデフォルトページに戻ります.

  
    
< customerrors defaultredirect ="http://anotherhost/error.aspx" mode ="remoteonly" >
< error statuscode ="500" redirect ="http:/anotherhost/pages/callsupport.html" />
< error statuscode ="404" redirect ="http:/anotherhost/pages/adminmessage.html" />
< error statuscode ="403" redirect ="http:/anotherhost/pages/noaccess.html" />
</ customerrors >

カスタマイズエラーページでは、完了した状況に非常に役立ちますが、開発中は対処しにくいことがあります.開発中にバグが発生すると予想し、発見したときに実際のエラー情報追跡を見たいからです.この問題を解決するために、タグは3つの値を持つ「mode」属性をサポートします.「on」:常にカスタムエラーページを発行することを意味します.「off」:カスタムエラーページを発行しないことを意味します(元のエラー情報はいつも表示されます).「remoteonly」:リモートブラウザがサイトをクリックしたときにのみカスタムエラーページが発行されることを意味します(実際のマシンでサイトをクリックした開発者は詳細なエラー情報を表示します).
二、Global.asaxファイルにアプリケーションエラーコードを追加し、システムログファイルprotected void Application_に書き込むError(Object sender, EventArgs e) { Exception LastError = Server.GetLastError(); String ErrMessage = LastError.ToString();
String LogName = "MyLog"; String Message = "Url "+ Request.Path + "Error: "+ ErrMessage;
//Create Event Log if It Doesn't Exist
if (!EventLog.SourceExists(LogName)) { EventLog.CreateEventSource(LogName, LogName); } EventLog Log = new EventLog(); Log.Source = LogName;//These are the five options that will display a different icon. Log.WriteEntry(Message, EventLogEntryType.Information, 1); Log.WriteEntry(Message, EventLogEntryType.Error, 2); Log.WriteEntry(Message, EventLogEntryType.Warning, 3); Log.WriteEntry(Message, EventLogEntryType.SuccessAudit, 4); Log.WriteEntry(Message, EventLogEntryType.FailureAudit, 5);
}