ASP.NET同以前的ASP一樣,當伺服器上發生了一個已耗用時間或編譯時間錯誤時,就會產生一個html 錯誤頁面。但是與ASP不同,ASP.NET格外關注的是:要確保在預設狀態下,不會因為這個錯誤的發生而泄露“安全”資訊。尤其是如果你從一個遠程機器上點擊伺服器的話。“out of the box”型的錯誤處理設定將不會導致顯示遠程機器的編譯器資訊、泄露配置資訊、檔案名稱、堆棧記錄 、原始碼或線性資料。相反,遠端使用者只會看到一個如“發生了應用程式錯誤”的普通訊息。要想查看錯誤細節,使用者必須要:1)從本機伺服器再次點擊頁面,或者是 2)在機器或應用程式的config.web檔案中修改配置的設定來允許遠端存取:
<%@ Import Namespace="System.Diagnostics" %>
<script language="VB" runat=server>
Sub Application_Error(Sender As Object, E as EventArgs)
'Obtain the URL of the Request
Dim PageUrl as String = Request.Path
'Obtain the Exception Object for the Error
Dim ErrorInfo as Exception = Server.GetLastError()
'Construct Error Message to Write to NT Event Log
Dim Message As String = "Url " & PageUrl
Message = Message & " Error: "
Message = Message & ErrorInfo.ToString
'NT Event Log Name to Write Message To
Dim LogName As String = "MyCustomLog"
'Create Event Log if It Doesn’t Exist
If (Not EventLog.SourceExists(LogName)) Then
EventLog.CreateEventSource(LogName, LogName)
End if
'Fire off to Event Log
Dim Log as New EventLog
Log.Source = LogName
Log.WriteEntry(Message, EventLogEntryType.Error)
End Sub
</script>