Application_Error()
当我的全局应用程序文件 ( global.asax
) 中抛出和处理异常时,我在 HttpHandler 中遇到问题。我正在尝试exception.Message
在我的应用程序的 EventLog 源中编写。
在你问之前澄清一下,是的,EventLog 源存在。我遇到的问题是异常本身不会写入我的应用程序的 EventLog 源(为了这个例子,我们会说事件日志源被命名HttpEndpoint
),而是将自身记录到 ASP.NET 4.0。 30319.0 事件日志源。
有没有什么办法可以解决这个问题而不取消 global.asax 的Application_Error()
方法,包装在抛出此错误之前执行的方法try{}catch{}
并以这种方式写入应用程序的事件日志源?
中的代码Application_Error()
非常简单:
protected void Application_Error( object sender, EventArgs e )
{
var exception = Server.GetLastError();
if ( exception == null )
{
return;
}
// try casting exception to known types for more specific event log entries
var msmqOutputQueueWriteFailedException = exception as OutputMessageQueueWriteFailedException;
if ( msmqOutputQueueWriteFailedException != null )
{
_windowsEventLog.LogFatal( _eventLogSource, string.Format( CultureInfo.CurrentCulture, "MSMQ Message Send Failure: {0} - InnerException Message: {1}", msmqOutputQueueWriteFailedException.Message, msmqOutputQueueWriteFailedException.InnerException.Message ) );
}
_windowsEventLog.LogError( _eventLogSource, String.Format( CultureInfo.CurrentCulture, "Global Exception was thrown: {0}", exception.Message ), exception );
}
的事件日志源HttpEndpoint
保存<AppSetting>
在 Web.Config 文件中,并分配给 中的_eventLogSource
成员global.asax
。我还在应用程序内对同一个事件日志源(在外部global.asax
)进行其他日志记录,并且一切正常且花花公子。
有任何想法吗?非常感谢任何帮助/反馈。