2012-02-24 9 views
2

私はIIS 7が統合モードで動作しているという問題を研究しています。我々は.net 3.5で動作するいくつかのアプリケーションを持っています。私たちがいつも捕まえて未処理の例外を処理してきた標準的な方法は、Global.asaxでApplication_Errorメソッドを利用することです(この場合、未処理の例外は、存在しないaspxページに対して要求が行われたときに生成されるHttpExceptionです) )。Response.Redirectは、IIS 7統合モードを使用してglobal.asaxで使用できますか?

Application_Errorの内部では、カスタムエラー処理を使用してエラーをデータベースに記録し、アラート電子メールを送信し、指定されたエラーページにリダイレクトします。エラーログとアラート電子メールは期待通りに機能します。リダイレクトは行いません。

リクエスト/レスポンスを表示するためにFiddlerを使用しましたが、私のcustomErrorsセクションとはまったく異なるページにHTTP 302を取得しています。

Response.RedirectがApplication_Errorで動作しないのはなぜですか?

ここに私のコードは、これまでのところです:私は存在しませんaspxページを訪問しようとすると、

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
    Dim ex As System.Exception = Server.GetLastError 
    Server.ClearError() 

    If Not (TypeOf (ex) Is HttpException) Then 
     //Run our internal error handling here 
    Else 
     Dim httpEx As HttpException = CType(ex, HttpException) 
     Response.Clear() 
     Response.StatusCode = httpEx.GetHttpCode() 
     Response.TrySkipIisCustomErrors = True 
     Server.Transfer("../Error.htm") 
    End If 
End Sub 

これが細かい実行されます。ただし、静的ページでは機能しません。

このコードが現在実行されているバリエーションは、customErrorsまたはhttpErrorsセクションなしで試してみました。

答えて

0

IISエラーページに行く場合は、TrySkipIisCustomErrorsをtrueに設定する必要があります。

+0

私はこれを実装していますが、Server.Transferをaspxページではなく静的ページに呼び出すときにのみ機能します。なぜどんなアイデア? – Chuck

+0

@Chuck web.configのApplication_Errorコードとセクションを投稿できますか? –

+0

朝に投稿します。ありがとう。 – Chuck