ASP.NETグローバル例外ハンドラ


私たちは時折プログラムを書くときに、誤って扱われていないいくつかの例外につながります。例外の詳細は、ユーザーを求められた場合は、ユーザーがより多くの情報を与え、異常なトラブルを報告するよう求めていない場合、不安をもたらすために。設定はのcustomErrorsモードによって達成することができますが、管理者だけがエラーを表示することができますが、見つかった時の問題は時間がかかることがあります。例外が発生したときにグローバルな例外ハンドラによって、すぐに例外を記録することができ、または特定し、最速のスピードで例外を処理するには、管理者に直接電子メールレポートを送信します。

ASP.NETアプリケーションは、主のHttpApplicationの追加中にエラーが発生したイベントに対処するためにグローバルな例外ハンドラを追加します。これは、BeginRequestイベントイベントURL書き換え方法と同様です。まず後継System.Web.IHttpModuleクラスを構築しました。そして、InitメソッドとShowErrorメソッドを追加します。

名前空間  Snowdream
{

    
パブリック クラス HttpModuleを:System.Web.IHttpModule     { 公共ボイド 初期(System.Web.HttpApplicationコンテキスト)        {             context.Error  + = 新しい イベントハンドラ(ShowError)。        } プライベートボイド ShowError(オブジェクト 送信者、のEventArgs電子)        { // 在这里进行异常处理        }     } }  


        
 

 



        
 


            




その後も、あなたはweb.configファイルを設定する必要がありますのHttpModulesが力にそれを持って来ます。

私はアプローチがデータベースに記録されている例外の詳細である好む、その後、数を返し、その後、独自のエラーページを書くためにページをリダイレクトし、この数は、ユーザに提示され、あなたがエラーを報告したい場合は、ユーザーにのみ提供する必要がありますエラー番号は、管理者がバックグラウンドでエラーの詳細を見つけて、変更を加えることができるようになります。

ここではグローバルな例外処理の問題と私の解決策を作るとき、私は2に遭遇したものです

それはプライベートプロパティに直接アクセスすることができないため、最初は、例外HRESULTを得ることで、溶液(INT)System.Runtime.InteropServices.Marshal.GetHRForException(例外)を介して取得します

第二の問題は、「ファイルが存在しない」、このような間違ったURLは、例外処理システムが記録するユーザーの種類としてASP.NETアプリケーションに起因する多くのミスを記録すること間違いによるものではなく、これらのミスは本当にないレコードだけを反映することはできませんASP.NETアプリケーションの管理者は例外なく、多くの問題をもたらすでしょう。私の解決策は、(例外はSystem.Web.HttpExceptionである)かどうかを判断することにより、これらのHttpExceptionをフィルタリングすることです。

ます。https://www.cnblogs.com/zhangchenliang/archive/2011/04/11/2012817.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34356138/article/details/93496055