1

最近,我注意到 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.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) 的最新稳定版本。下面是<elmah>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.Net MVC 4。

4

1 回答 1

0

我在 Google Code 上提出了与 ELMAH 相关的问题,并得到了一位开发人员的回复。

基本上,电子邮件主题似乎在 Elmah 内部,使用string.Format()错误消息 {0} 和错误类型 {1} 对其进行格式化。就我而言,我在设置中指定的主题是:

{Error Encountered} Website_Name

{}触发 FormatException的地方,因此问题。这很容易通过用圆括号替换它们来解决,因为我不需要大括号。可以通过{{and来逃避它们}},但就我而言,这是不必要的。

于 2013-08-23T16:26:08.630 回答