7

クラシックASPの500個のエラーすべてをグローバルレベルでキャプチャすることは可能ですか?たぶんIISの何か。現在、II6を使用しています。エラーメッセージをキャプチャしてデータベースに保存するのが好きです。ASPXページでそれが可能であることは知っていますが、従来のaspでどのように行うかは正確にはわかりません。

ありがとうございました

4

4 に答える 4

16

はい、エラーの詳細をデータベースに記録するaspページを作成し、これを以下のようにIISの500ハンドラーページに設定します。

Server.GetLastErrorオブジェクトを使用して、ハンドラースクリプトのエラーの詳細を取得します。

復元力を確保するために、500ハンドラーのDBではなくテキストファイルにログインすることをお勧めします。

IISでカスタム500ハンドラーを設定する

于 2012-02-13T16:33:42.140 に答える
7

Jonの回答を補完するために、次のスクリプトを使用してエラーをログファイルに書き込みます。

<%
'Set this page up in IIS to receive HTTP 500 errors
''Type' needs to be 'URL' and the URL is e.g.: '/500Error.asp' if this file is named '500Error.asp' and is in the site root directory.
'This script assumes there is a "/Log" folder, and that IIS has write access to it.
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

Dim objFSO, err
Set objFSO=CreateObject("Scripting.FileSystemObject")

Set err = Server.GetLastError()

outFile=Server.MapPath("/Log/ErrorLog.txt")
Set objFile = objFSO.OpenTextFile(outFile, ForAppending, True, TristateTrue)

objFile.WriteLine Now & " - ERROR - ASPCode:" & err.ASPCode & " ASPDescription: " & err.ASPDescription & " Category: " & err.Category & " Description: " & err.Description & " File: " & err.File & " Line: " & err.Line & " Source: " & err.Source  & vbCrLf
objFile.Close

Set objFile = Nothing
Set err = Nothing

%>
于 2013-10-07T02:44:41.137 に答える
5

従来のASPでのエラー処理は、完全な苦痛です。を使用して、発生すると思われる場所でエラーをキャッチon error resume nextし、次のコード行でエラーコードを確認できます。

または、サーバーログをスキャンして500エラーを検出することもできます。または、IIS設定で「500エラー」ページを設定します。

On Error Resume Next
... do something...
If Err.Number <> 0 Then
... handle error
end if
于 2012-02-13T16:35:47.127 に答える
-1

@Jon Eastwoodの回答に追加するには、IIS 7.5を使用している場合、「カスタムエラー」の代わりに、下の画像の「.NETエラーページ」を検索します。

ここに画像の説明を入力してください

これは、WindowsServer2008およびその他の新しいWindowsSKUに適用されます。

于 2015-07-29T05:35:03.417 に答える