Asp.net mvc Elmah.ErrorMailModule.ReportError引发FormatException时出错,该异常会回收w3wp进程
最近,我注意到IIS中的web应用程序正在随机重新启动,有时每20分钟重新启动一次。我检查了事件日志,发现了以下各种错误:Asp.net mvc Elmah.ErrorMailModule.ReportError引发FormatException时出错,该异常会回收w3wp进程,asp.net-mvc,elmah,elmah.mvc,Asp.net Mvc,Elmah,Elmah.mvc,最近,我注意到IIS中的web应用程序正在随机重新启动,有时每20分钟重新启动一次。我检查了事件日志,发现了以下各种错误: 级别:错误 源:.Net运行时 事件编号:1026 以下是例外情况的详细信息: Application: w3wp.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.
- 级别:错误
- 源:.Net运行时
- 事件编号:1026
Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.FormatException
Stack:
at System.Text.StringBuilder.AppendFormat(System.IFormatProvider, System.String, System.Object[])
at System.String.Format(System.IFormatProvider, System.String, System.Object[])
at Elmah.ErrorMailModule.ReportError(Elmah.Error)
at Elmah.ErrorMailModule.ReportError(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
我使用的是Elmah的最新稳定版本(1.2.2)。下面是web.config中的
配置节点
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data/errors/" />
<security allowRemoteAccess="1" />
<errorMail from="errors.visitgozo@casasoft-dev.com" to="errors@casasoft-dev" subject="{Error_Encountered} [Visit Gozo]"
async="true" smtpPort="25" smtpServer="mail.casasoft.com.mt" userName="errors@casasoft-automailer" password="RvjyBiyvePVVpcLBNgJ6" />
</elmah>
我将其设置为以异步模式发送此类电子邮件(async=“true”)。如果这些是在后台线程上生成的,并且在后台线程上发生错误,据我所知,进程将终止
有什么办法吗
我正在使用IIS7和ASP.netmvc4。我提出了一个关于与ELMAH相关的谷歌代码的问题,我得到了一位开发人员的回复
基本上,电子邮件主题似乎在Elmah内部使用string.Format()
将其格式化为错误消息{0}和错误类型{1}。就我而言,我在设置中指定的主题是:
{Error Encountered} Website_Name
触发FormatException的
{}
,因此出现问题。用圆括号代替它们很容易解决这个问题,因为我不需要花括号。我们可以通过执行{{
和}
来逃避它们,但在我的情况下,这是不必要的。您是否尝试删除异步标志,它仍然失败?@alexanderb是的,这就是我当时尝试的。我现在已经检查了日志文件,但这种情况不再发生。但尽管如此,电子邮件发送还是相当昂贵,我不希望它发生在主线程上。我同意,异步更好。。但也许仅仅改变这个标志还不够,也许应该调整一些elmah(甚至iis)设置?不幸的是,我从未试过那个案子。