Asp.net mvc 我如何处理Elmah本身引起的异常?

Asp.net mvc 我如何处理Elmah本身引起的异常?,asp.net-mvc,error-handling,elmah,Asp.net Mvc,Error Handling,Elmah,我已经为ASP.NETMVC5项目设置了Elmah来处理异常并将它们保存在数据库(Oracle)中 现在,我遇到了这样一种情况,Elmah无法在数据库中记录异常,并且由于数据库关闭、连接字符串更改等原因而导致异常 我试过这个: try { Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("Testing Elmah exception handling")); } cat

我已经为ASP.NETMVC5项目设置了Elmah来处理异常并将它们保存在数据库(Oracle)中

现在,我遇到了这样一种情况,Elmah无法在数据库中记录异常,并且由于数据库关闭、连接字符串更改等原因而导致异常

我试过这个:

try
        {
            Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("Testing Elmah exception handling"));
        } catch (Exception ex)
        {
            LogException(ex);
        }
但是LogException(ex)永远不会执行


在LogException中,我实现了一个自定义记录器,它也在数据库中写入数据。

Elmah在回退方案中在服务器上的Windows事件日志中写入故障。这意味着,如果Elmah未能在您可能选择的配置选项(即数据库、文件系统或任何自定义选项配置)中写入异常/事件,它将写入运行应用程序的服务器上的Windows事件日志


另请注意,在NLB(负载平衡)环境中,异常将记录在某个服务器的Windows事件日志中,该服务器提供特定请求,而不是运行应用程序的所有服务器。

理想情况下,您应该将elmah故障记录在Windows事件日志中。这意味着,如果Elmah无法写入数据库,那么它应该在服务器的Windows日志中记录Elmah异常。这只是一个后备方案。@Nirman感谢您指出Windows事件日志。似乎当Elmah有内部异常时,它们会自动写入Windows事件日志,并且不会引发异常。这就是为什么我的挡块没有被击中的原因。很高兴,它帮助你找到了方向。我认为您可能需要在Windows日志中显式地编写它,但默认情况下已经完成了。