2012-02-13 17 views
6

Có thể chụp tất cả 500 lỗi trong ASP cổ điển ở cấp độ toàn cầu không? Có lẽ một cái gì đó trong IIS. Tôi đang sử dụng II6 vào lúc này. Tôi thích nắm bắt thông báo lỗi và sau đó lưu trữ nó trong cơ sở dữ liệu. Tôi biết nó có thể trong các trang ASPX, nhưng không biết chính xác làm thế nào bạn làm trong asp cổ điển.ASP cổ điển: Lỗi chụp

Cảm ơn bạn

+0

IIS7 có yêu cầu không thành công Truy tìm báo cáo nào đã giải quyết lỗi ASP cổ điển, không chắc liệu báo cáo có tồn tại trong 6.0 hay không. http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis/ –

Trả lời

13

Vâng, tạo ra một trang asp mà sẽ ghi lại các chi tiết lỗi cơ sở dữ liệu, và thiết lập này là trang 500 handler trong IIS như dưới đây.

Sử dụng đối tượng Server.GetLastError để xem chi tiết lỗi trong tập lệnh xử lý của bạn.

Có thể là một ý tưởng hay khi đăng nhập vào tệp văn bản thay vì DB trong trình xử lý 500 của bạn để có khả năng phục hồi.

Set Custom 500 Handler in IIS

+1

Câu trả lời hay ... – Dan

+0

Đây chính xác là những gì tôi đang tìm kiếm. Cảm ơn Jon. Tôi sẽ thử nó ngay bây giờ. – MindGame

+0

Khi tôi response.write Server.GetLastError() Tôi không nhận được bất cứ điều gì. Bất kỳ ý tưởng? – MindGame

4

Xử lý lỗi trong ASP cổ điển là một cơn đau hoàn toàn. Bạn có thể bắt gặp lỗi mà bạn cho rằng nó sẽ xảy ra khi sử dụng on error resume next, sau đó kiểm tra mã lỗi trong dòng mã sau đây.

Hoặc bạn có thể quét nhật ký máy chủ cho 500 lỗi. hoặc thiết lập trang "lỗi 500" trong cài đặt IIS của bạn.

On Error Resume Next 
... do something... 
If Err.Number <> 0 Then 
... handle error 
end if 
5

Bổ sung câu trả lời của Jon, sử dụng kịch bản này để ghi lỗi vào một tập tin nhật ký:

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

%> 
0

Để thêm vào câu trả lời @ Jon Eastwood - nếu bạn đang sử dụng IIS 7.5, sau đó thay vì "lỗi Tuỳ chỉnh "bạn sẽ tìm kiếm" NET Lỗi trang" mỗi hình dưới đây:

enter image description here

này áp dụng cho Windows server 2008 và các phiên bản mới hơn của Windows SKU.