私は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セクションなしで試してみました。
私はこれを実装していますが、Server.Transferをaspxページではなく静的ページに呼び出すときにのみ機能します。なぜどんなアイデア? – Chuck
@Chuck web.configのApplication_Errorコードとセクションを投稿できますか? –
朝に投稿します。ありがとう。 – Chuck