我们正在使用优秀的ELMAH来处理ASP.NET 3.5 Web应用程序中未处理的exception。 除了使用RESTfunction消耗的WCF服务之外,这对于所有网站都非常有效。 当在应用程序代码不处理的操作方法中发生exception时,WCF将根据服务合同和configuration设置以各种方式处理它。 这意味着这个exception不会引发ELMAH使用的ASP.NET HttpApplication.Error事件。 我知道处理这两个解决scheme是: 将所有的方法调用封装在一个try {} catch(Exception ex){Elmah.ErrorSignal.FromCurrentContext()。Raise(ex); 扔; }在catch块中显式调用Elmah。 使用IErrorHandler将在Will Hughes的博客文章中描述使WCF和ELMAH一起玩起来将ELMAH调用分解为一个单独的ErrorHandler。 第一个选项非常简单,但不完全干燥 。 第二个选项只需要在实现属性和ErrorHandler后用装饰属性装饰每个服务。 我已经完成了基于威尔的工作,但我想validation这是发布代码之前正确的方法 。 有没有更好的办法,我错过了? IErrorHandler的MSDN文档说, HandleError方法是做logging的地方,但是ELMAH访问HttpContext.Current。 ApplicationInstance ,即使HttpContext.Current可用,此方法内为null。 在ProvideFault方法中调用Elmah是一种解决方法,因为ApplicationInstance已设置,但与API文档中描述的意图不符。 我在这里错过了什么? 该文档确实说明,您不应该依赖在操作线程上调用的HandleError方法,这可能是为什么ApplicationInstance在此范围内为null。
有人使用Elmah通过电子邮件发送exception吗? 我已经通过SQL Server设置了Elmah日志logging,并且可以通过Elmah.axd页面查看错误页面,但是我无法使电子邮件组件工作。 这里的想法是获得电子邮件通知,所以我们可以更快地对exception作出反应。 这里是我的web.config(省略了不必要的部分),所有的敏感数据由* * *replace。 即使我指定了要连接的服务器,SMTP服务是否需要在本地计算机上运行? <?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="elmah"> <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/> <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/> <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/> </sectionGroup> </configSections> <appSettings/> <connectionStrings> <add name="elmah-sql" connectionString="Data Source=***;Initial Catalog=***;Persist Security Info=True;User ID=***;Password=***" /> </connectionStrings> <elmah> <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sql" > </errorLog> <errorMail from="test@test.com" to="test@test.com" subject="Application Exception" […]
有些人使用ELMAH而不是log4net。 是什么让它变得更好? 我在一个堆栈溢出问题的答案中发现了ELMAH 问题如何在C#中进行日志logging?
我试图用我的asp.net网站使用elmah,但每当我尝试去http:// localhost:port / elmah.axd我得到资源找不到exception。 我的web.config如下。 <?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="elmah"> <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/> <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" /> <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" /> <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/> </sectionGroup> </configSections> <elmah> <security allowRemoteAccess="0" /> <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sql" /> <errorMail from="my@account" to="myself" subject="ERROR From Elmah:" async="true" smtpPort="587" smtpServer="smtp.gmail.com" userName="my@account" password="mypassword" […]
是否可以使用ELMAH进行以下操作? logger.Log(" something"); 我正在做这样的事情: try { // Code that might throw an exception } catch(Exception ex) { // I need to log error here… } ELMAH不会自动logging此exception,因为它已被处理。
我在我的ASP.NET项目中安装了ELMAH 1.1 .Net 3.5 x64,现在我得到这个错误(每当我尝试看到任何页面): 无法加载文件或程序集“System.Data.SQLite,Version = 1.0.61.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139”或其某个依赖项。 试图加载格式不正确的程序。 说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的来源。 exception详细信息:System.BadImageFormatException:无法加载文件或程序集“System.Data.SQLite,Version = 1.0.61.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139”或其某个依赖项。 试图加载格式不正确的程序。 在底部更多的错误细节。 我的主动解决scheme平台是“任何CPU”,我正在x64上运行x64的Windows 7,当然还有处理器。 我们之所以使用这个版本的ELMAH,是因为1.0 .Net 3.5(x86,它是它编译的唯一平台)在我们的x64 Windows服务器上给了我们同样的错误。 我已经尝试编译x86和x64,并得到相同的错误。 我试过删除所有的编译器输出(bin和obj)。 最后,我直接引用了SQLite dll,这个项目在服务器上不需要,我得到了这个编译错误: 错误1警告作为错误:程序集生成 – 引用的程序集“System.Data.SQLite.dll”目标不同的处理器MyProject 任何想法可能是什么问题? 更多的错误信息: 源错误: 在执行当前Web请求期间生成未处理的exception。 有关exception的来源和位置的信息可以使用下面的exception堆栈跟踪来标识。 堆栈跟踪: [BadImageFormatException:无法加载文件或程序集“System.Data.SQLite,版本= 1.0.61.0,文化=中立,PublicKeyToken = db937bc2d44ff139”或其依赖项之一。 试图加载格式不正确的程序。] System.Reflection.Assembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,Assembly locationHint,StackCrawlMark&stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection)+0 […]
我试图使用ELMAH在我的ASP.NET MVC应用程序中logging错误,但是当我在我的控制器上使用[HandleError]属性时,ELMAH在发生错误时不logging任何错误。 正如我猜测它,因为ELMAH只logging未处理的错误和[HandleError]属性正在处理错误,因此不需要logging它。 如何修改或如何修改属性,ELMAH可以知道有错误并logging下来。 编辑:让我确保每个人都明白,我知道我可以修改属性那不是我问的问题… ELMAH获取绕过使用handleerror属性意味着它不会看到有错误,因为它被处理已经通过属性…我所要求的是有一种方法,使ELMAH看到错误,并logging它,即使属性处理它…我search周围,没有看到任何方法来调用强制它的日志错误….