我正在测试ELMAH,并故意关闭数据库连接,查看我的应用程序中的ELMAH日志,看看如果数据库不可用,生产中会发生什么情况。ELMAH SQL错误处理程序数据库不可用 - 记录会发生什么情况?
似乎ELMAH不能捕获自己的错误 - 当SQL数据库日志失败时,AXD文件不可用。
如果数据库不可用,ELMAH的预期行为是什么?
如果发生这种情况,我该如何诊断我的错误?
我正在测试ELMAH,并故意关闭数据库连接,查看我的应用程序中的ELMAH日志,看看如果数据库不可用,生产中会发生什么情况。ELMAH SQL错误处理程序数据库不可用 - 记录会发生什么情况?
似乎ELMAH不能捕获自己的错误 - 当SQL数据库日志失败时,AXD文件不可用。
如果数据库不可用,ELMAH的预期行为是什么?
如果发生这种情况,我该如何诊断我的错误?
对ELMAH并不确定,但是这种日志框架的预期行为是,如果出现问题时不会抛出任何异常。即如果ELMAH的数据库关闭,我会认为它不会将错误记录到数据库。
如上所示,您可以/应该使用替代接收器 - 电子邮件或平面文件。
您可以随时使用xml文件选项记录您的错误。
我认为你有混合的上下文。
如果数据库不可用,ELMAH的行为是不将错误记录到数据库。如果在服务器上抛出异常,或者您通过ErrorSignal
引发异常,ELMAH将让该异常通过黄色屏幕或自定义错误页面(您的设置)。
由于Errors.axd页面只能由那些应该看到它的人访问(理想情况下),向用户显示该错误是可以的。
底线是,如果错误数据库已关闭,则无法诊断错误。对于我们来说,如果是这样的话,我们会遇到更大的问题,因为错误数据库位于生产数据库中。
在web \ bin目录中使用ELmah.dll进行调试时,Web应用程序在无法访问数据库时,在其中一个elmah源文件(由elmah.pdb中的信息指示)中抛出错误。所以 - 它会抛出一个未处理的异常。其他ELMAH采伐者是否会在这种情况下工作? – Caveatrob 2009-04-16 22:29:41
似乎ELMAH不能捕获它自己 错误
ELMAH做陷阱了自己的错误,在一定程度上。如果ErrorLogModule
在尝试记录错误时遇到异常,则记录产生的异常将发送到标准.NET Framework跟踪工具。见line 123 from 1.0 sources.另请参见以下演练从ASP.NET文档获取标准.NET框架跟踪使用ASP.NET跟踪:
Walkthrough: Integrating ASP.NET Tracing with System.Diagnostics Tracing
的AXD文件不可用时, SQL数据库日志失败。
这是正确的。在使用SqlErrorLog
时,SQL Server数据库连接必须可用于查看存储在SQL Server数据库中的错误。
如果数据库不可用,ELMAH 的预期行为是什么?
例如,如果SQL Server数据库关闭,在日志记录过程中将发生SqlException
。然后,ELMAH将发送SqlException
对象内容到标准的.NET Framework跟踪工具。
如果发生此 问题,如何诊断我的错误?
这里最好的选择是也启用记录和通过电子邮件发送错误。如果数据库关闭,邮件网关启动并且您仍然会收到错误通知。实际上,这些错误将在某些邮箱中得到记录。这还具有额外的优点,即如果邮件网关关闭,那么数据库将会启动并且错误将被记录在那里。但是,如果两者都出现故障,那么您需要认真检查您的生产基础架构,并可能采取措施通过附加措施监控系统的运行状况。
+1在思考/测试最坏情况下的情景之前! – 2009-04-16 21:44:29