Классический ASP: ошибки захвата - PullRequest
6 голосов
/ 13 февраля 2012

Можно ли перехватить все 500 ошибок в Classic ASP на глобальном уровне?Может быть, что-то в IIS.Я использую II6 в данный момент.Мне нравится записывать сообщение об ошибке, а затем сохранять его в базе данных.Я знаю, что это возможно на страницах ASPX, но не знаю точно, как у классического аспа.

Спасибо

Ответы [ 4 ]

14 голосов
/ 13 февраля 2012

Да, создайте страницу asp, которая будет регистрировать сведения об ошибках в базе данных, и установите для нее страницу обработчика 500 в IIS, как показано ниже.

Используйте объект Server.GetLastError для получения сведений оошибка в вашем скрипте обработчика.

Для обеспечения отказоустойчивости может быть полезно выполнить запись в текстовый файл, а не в базу данных вашего обработчика 500.

Set Custom 500 Handler in IIS

6 голосов
/ 07 октября 2013

Дополняя ответ Джона, используйте этот скрипт для записи ошибок в файл журнала:

<%
'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

%>
4 голосов
/ 13 февраля 2012

Обработка ошибок в классическом ASP - полная боль.Вы можете перехватить ошибку там, где, по вашему мнению, она возникнет, с помощью on error resume next, а затем проверить код ошибки в следующей строке кода.

Также вы можете сканировать журналы сервера на наличие 500 ошибок.или настройте страницу «Ошибка 500» в настройках IIS.

On Error Resume Next
... do something...
If Err.Number <> 0 Then
... handle error
end if
0 голосов
/ 29 июля 2015

Чтобы добавить ответ @Jon Eastwood - если вы используете IIS 7.5, вместо «Пользовательские ошибки» вы будете искать «Страницы ошибок .NET» на изображении ниже:

enter image description here

Это относится к Windows Server 2008 и другим более новым версиям Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...