Я просто пытаюсь вывести подробности ошибки приложения на своей странице ошибок. В global.asax у меня есть некоторая обработка, а затем server.transfer на мою страницу с этим кодом:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Get exception details
Dim ex As Exception = HttpContext.Current.Server.GetLastError()
If TypeOf ex Is HttpUnhandledException AndAlso ex.InnerException IsNot Nothing Then
ex = ex.InnerException
End If
If ex Is Nothing Then
lblError.Text = "<p>An unknown error occurred.</p>"
Else
'Determine what type of error we're dealing with
If TypeOf ex Is System.Data.SqlClient.SqlException Then
'A database-related exception...
lblError.Text = String.Format("<p>The database is having problems... please try your submission again later.<br />{0}</p>", ex.Message)
ElseIf TypeOf ex Is ApplicationException Then
'An ApplicationException has occurred
lblError.Text = String.Concat("<p>An application fault has been tripped:<br /> {0}</p>", ex.Message)
Else
'For all others, display the StackTrace
lblError.Text = String.Format("<p>An unknown error occurred. The following dump of exception information can be used to diagnose the issue</p><p class=""stackTrace""><strong>Exception:</strong> {0}</p><p class=""stackTrace""><strong>Message:</strong> {1}</p><p class=""stackTrace""><strong>Stack Trace:</strong><br />{2}</p>", ex.GetType().ToString(), ex.Message, ex.StackTrace.Replace(System.Environment.NewLine, "<br />"))
End If
End If
End Sub
Локально работает отлично. При развертывании на нашем компьютере с Windows Server 2008 под управлением IIS 7 условие ex никогда не срабатывает.
Я предполагаю, что эта проблема связана с версией IIS - просто потому, что я видел несколько других сообщений в том же духе, но никаких решений. Если у кого-то есть мысли о том, как я могу выполнить сброс сообщения об ошибке, я был бы признателен. Я хотел бы знать, почему это происходит также. Я имею в виду, исправление это здорово, но мне любопытно, почему.