我想显示异常的序列号(来自ELMAH_Error表中的序列号列),而不是每当发生错误时显示给用户的GUID。这可能吗?我找到了这篇文章Problem passing ELMAH log id to Custom Error page in ASP.NET,但它给出了GUID,我想知道如何在ELMAH组件的Logged事件中访问序列号?提前谢谢。
答案 0 :(得分:1)
在这里开箱即用,没有亲自尝试过。
你必须对elmah的来源做一些修改并编译你自己的小版本的Elmah。如果您将Elmah配置为在其他位置记录,我不确定是否使用了序列列。这些是我认为您需要采取的步骤,可能特定于SQL服务器日志记录:
答案 1 :(得分:1)
ELMAH旨在将错误记录到指定的日志源。最常见的日志源是SqlErrorLog
类,它将错误记录到SQL Server数据库,并且是核心ELMAH库的一部分。但是还有其他日志源可用于将错误记录到电子邮件地址,XML文件,Oracle数据库等等。
您引用的序列号是SqlErrorLog
类特有的。如果您查看其他一些日志源,例如XmlFileErrorLog
,您将看到没有序列号的概念。
鉴于此,ELMAH的Error
类 - 代表错误 - 没有Sequence
属性也就不足为奇了。 “序列”是SqlErrorLog
日志源特有的。 (如果检查用于为SqlErrorLog
日志源创建数据库对象的T-SQL脚本,则可以进一步查看此内容 - Sequence
字段是IDENTITY
列,因此会自动计算由插入数据库。它不是ELMAH提供的值。)
MichaelvR建议修改ELMAH的源代码,但我建议不要这样做,因为这样做会将你的ELMAH分支绑定到特定的日志源。相反,也许是一个不那么优雅(和更简单!)的解决方案:
ErrorLog_Logged
中创建Global.asax
事件处理程序,Id
值(GUID),ELMAH_Error
表。以下是一个示例查询:
SELECT Sequence
FROM ELMAH_Error
WHERE ErrorId = TheErrorIdOfTheJustLoggedError
您如何看待这种解决方法?
快乐编程!