2012-03-14 11 views
4

私のプロジェクトにはoops.aspxというエラーページがあります。私たちは、global.asax次のコードを持っている:Global.asaxでエラーが検出されませんでしたか?

protected void Application_Error(object sender, EventArgs e) 
{ 
    Server.Transfer("~/oops.aspx", true); 
} 

oops.aspxは、エラーを抽出し、サーバーに素敵な電子メールを生成し、ユーザーにエラーメッセージを提示することができます。

Server.Transferを使用すると、URL、フォーム情報、その他の役立つトラブルシューティング情報が保持されます。 oops.aspxのある時点で、電子メールを作成しながら、私はRequest.RawUrlを取得し、それを電子メールに含めます。これは、エラーの原因となったページのURL(クエリ文字列パラメータ付き)です。

また、web.configファイルでこれを持っている:システムがこれに基づいて、エラーのリダイレクト場合

<customErrors mode="On" defaultRedirect="oops.aspx"></customErrors> 

、それは(時には%2Fパスセパレータと、時々/有する)/oops.aspx?aspxerrorpath=/Clients/EditClient.aspxにリダイレクト。クエリ文字列と例外情報が失われるため、oops.aspxによって生成された電子メールとメッセージは疎であり、何が起きているかについてはあまり言いません。

最近、この第2種のエラーが多く発生しています。エラーは小さなバンチで発生し、数分で数個、数時間で何も起こりません。それらはサイト全体で発生します(WebResource.axdなどを含む)、これは私たちのサイトの特定のエラーではなく、セッションサーバーの問題などのような低レベルで起こっていると思います。

だから、すべてのことで、私の実際の質問:

私は、彼らがGlobal.asaxので捕捉されないように起こるのサイトにエラーを抱えています。このようなエラーを引き起こす原因は何ですか?トラブルシューティングを行うにはどうしたらいいですか?

答えて

6

web.configでカスタムエラーが有効になっているため、Application_Errorが実行されてoops.aspxにリダイレクトされる前に例外がキャッチされます。これが起こらないようにするには、web.configでカスタムエラーを有効にしないでください。このようにして、統合パイプラインモードでアプリケーションプールを実行するようにIISを構成したと仮定した場合、すべてのエラーはApplication_Errorになります。

+0

Darin「Application_Error」とアプリケーションプールがIntegrated Pipelineモードの関係は何ですか? – VoodooChild

+3

@ VoodooChild、誰かが '/ myapp/foo.jpg'のようにアクセスしようとしたときにIIS 6.0でクラシックモードで実行すると、Application_Errorは決してヒットしません。 ASP.NETはこの要求を通知されません。 IISが直接イメージを提供します。統合パイプラインモードでは、すべての要求がマネージハンドラを経由します。 –

関連する問題