我设置Elmah将错误记录到SQL Server,Web应用程序将所有错误记录到数据库,但并非所有错误都显示在elmah.axd
中。
缺少的一些错误是:
System.Web.HttpUnhandledException
_shutDownMessage = HostingEnvironment启动关闭HostingEnvironment导致关闭_shutDownStack =
在System.Environment.GetStackTrace(Exception e,Boolean needFileInfo)
在System.Environment.get_StackTrace()
在System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()....
System.Web.HttpException
会话状态在此上下文中不可用。
_shutDownMessage = IIS配置更改HostingEnvironment启动关闭HostingEnvironment导致关闭CONFIG更改_shutDownStack =
在System.Environment.GetStackTrace(Exception e,Boolean needFileInfo)
在System.Environment.get_StackTrace().....
参见随附的屏幕截图。
如何使数据库中的所有错误都显示在elmah.axd
?
当我在文件系统中保存错误时,一切都很好,但当我转移到SQL Server时却没有。
谢谢!
答案 0 :(得分:3)
如果我谦虚地建立在首席架构师Atif所说的基础上,在 Web.config 中,就是这一部分:
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="foo" />
</elmah>
将其设置为:
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="foo" applicationName="*" />
</elmah>
这将显示所有数据库错误记录,而不仅仅是与Elmah正在运行的应用程序名称匹配的记录。如果未提供 applicationName 属性,则仅返回与IIS分配的标识符匹配的记录,例如 - &#34; / LM / W3SVC / 10 / ROOT&#34;。
如果您的应用程序纯粹用于在环境中的所有应用程序中查看记录的Elmah错误,那么这非常有用。
我&lt; 3 Elmah!
答案 1 :(得分:2)
我认为这是因为您有不同的应用程序名称(请参阅屏幕截图中的Application
列),SqlErrorLog
只会显示属于您在web.config
中配置的应用程序名称的错误(如果没有,ELMAH将默认使用IIS分配的标识符,如/LM/W3SVC/10/ROOT
)。这是设计使用,因为它允许您将一个后端数据库用于多个Web应用程序。最好配置稳定的逻辑应用程序名称。如果所有这些错误都适用于同一个应用程序,则可以在表格上运行UPDATE
语句,将Application
列设置为相同的值。
答案 2 :(得分:0)
我使用了sqlErrorLog,只需将ApplicationName设置为sqlErrorLog: 代码:
var connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
var sqlErrorLog = new Elmah.SqlErrorLog(connectionString);
var controller = executedContext.Controller as Controller;
if (controller != null)
sqlErrorLog.ApplicationName = controller.Request.ServerVariables["APPL_MD_PATH"];
var errorId = sqlErrorLog.Log(error);