当elmah提出错误时,我想尝试拦截并执行一些其他处理(导出数据库)。有没有办法做到这一点?
答案 0 :(得分:0)
是的,有方法
1.让我们创建项目名称 ElmahMvc
2.安装nuget包nuget
Install-Package Elmah.MVC
3。提出例外。您可以通过本地网址/ elmah访问错误日志
保存数据库和电子邮件有点配置....
让我们看看它
1.从官方网站下载ELMAH脚本
2.添加名为 log 的数据库并运行脚本
3.在web.config中添加连接字符串
<connectionStrings>
<add name="elmah" connectionString="Data Source=.;Initial Catalog=log;Persist Security Info=True;User ID=sa;Password=pass" providerName="System.Data.SqlClient" />
</connectionStrings>
4.在web.config
中添加elmah元素 <elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah" />
<!--For Addtional Mail Config .Remove it if not need for mail on every error-->
<errorMail from="waltoncrm@waltonbd.com"
to="mrahman.cse32@waltonbd.com"
subject="Application Exception"
async="false"
smtpPort="25"
smtpServer="YourServer"
userName="uName"
password="pass">
</errorMail>
</elmah>
并邮寄其他
System.WebServer下的
<system.net>
<mailSettings>
<smtp deliveryMethod ="Network">
<network host="smtp.gmail.com" port="587" userName="yourgmailEmailAddress" password="yourGmailEmailPassword" />
</smtp>
</mailSettings>
</system.net>
使用Visual Studio 2013下载我的示例项目和Elmah脚本 akash365.com
注意:如果您不想让您的程序崩溃或在asp.net网络表单中使用静态 [WebMethod] 这看起来很完美
try
{
//some web method code
}
catch(Exception ex)
{
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
}
答案 1 :(得分:0)
ELMAH公开了两个事件,以便执行此操作:ErrorLog_Filtering
和ErrorLog_Logged
。在记录到配置的错误日志之前调用ErrorLog_Filtering
,并且刚刚调用ErrorLog_Logged
。您会在error filtering上找到有关ELMAH site的文档。 ErrorLog_Logged
并未真正记录,但您可以在本文中看到它的示例:Logging to multiple ELMAH logs。
话虽如此,您可能不希望在ErrorLog_Logged
和ErrorLog_Filtering
中执行任何长时间运行的任务。它会降低你的系统速度。通过在每个错误上导出数据库,我不确定你要在这里实现什么目标?