2012-03-20 5 views
1

Webサイト/ vpathの場合、Application_Errorイベントを処理してエラーがブラウザに返送される前にそれを捕捉することは可能です。何とかサーバーレベルでこれを行うことも可能ですか?つまり、Webサイトでエラーが発生した場合に実行されるルートレベルのメソッドを定義しますが、そのWebサイトは何らかの理由でエラーを処理できません。サーバーレベルでエラー処理ロジックを定義する方法

私は、ルートレベルでweb.configを使用して、HTTPステータスコードごとにカスタムエラーメッセージを定義できることを知っています。しかし、アプリケーションロジックに応じて異なるタイプのコンテンツ(HTMLなど)を返したいので、これは私の場合には理想的ではありません。

答えて

1

カスタムHTTPモジュールをapplicationHost.configに登録することができます。このモジュールは、ターゲットマシン上のすべてのIISアプリケーションで使用されます。

1)HTTPモジュールと署名したクラスライブラリプロジェクトを作成します。

public class ErrorHandlingModule : IHttpModule 
{ 
    public void Dispose() { } 

    public void Init(HttpApplication context) 
    { 
     context.Error += new EventHandler(context_Error); 
    } 

    void context_Error(object sender, EventArgs e) 
    { 
     // handle error 
    } 
} 

2)Install GACへのクラスライブラリ、それはすべてのIISアプリケーションで共有できるように。

3)Install httpモジュールからapplicationHost.configファイルへ。このファイルは通常、C:\ Windows \ System32 \ inetsrv \ configにあります。このフォルダ内のファイルは64ビットプロセス(32ビットOSではこのような問題はありません)によってのみアクセスできますが、VS2010では見ることはできませんがエクスプローラでは実行できます。 applicationHost.configのフラグメントは次のようになります。

<location path="" overrideMode="Allow"> 
    <system.webServer> 
     <modules> 
      <add name="MyModule" preCondition="managedHandler" type="GlobalErrorHandler.ErrorHandlingModule, GlobalErrorHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bfd166351ed997df" /> 
+0

ありがとう、これは私が探していたものです!あなたが気にしていない場合、私はこのモジュールを持っていて、global.asaxでApplication_Errorを処理すると、最初に呼び出されるでしょうか? – McGarnagle

+0

助けてくれてうれしいです。私の場合、httpモジュールが最初に呼び出されます。しかし、少なくとも、アプリケーションのイベントハンドラの実行順序を記述しているドキュメントは見つかりませんでした。あなたがこのトピックについて何かを見つけたら私に教えてください:)。 –

0

私はあなたの質問が何であるかはっきりしていませんが、私の理解によればです。あなたが使用できるapplication_errorの内部で

Server.GetLastError() to get last error occured in server level. 
+0

明確にするために質問が更新されました。私の質問は、ウェブサイトがキャッチできないエラーをキャッチするコードブロックを持つことができるかどうかです。個々のアプリケーションではなく、サーバー全体のglobal.asax application_on_errorのように効果的です。 – McGarnagle

+0

あなたはイベントviwerでしか見ることができないと思います。 –

関連する問題