ELMAH applicationName:显示其他站点记录的异常

时间:2012-09-22 00:54:37

标签: asp.net-mvc-3 iis-7 elmah

我使用Elmah.SqlErrorLog有一个站点记录错误。我的目标是让另一个站点包含服务于localhost / elmah.axd通常会看到的页面的处理程序。原因是记录错误的站点使用表单身份验证,而我想限制谁可以通过Windows身份验证查看日志。

执行日志记录的站点在端口80上运行,显示日志的站点在端口8008上。首先,我无法看到日志记录站点的异常。然后我找到了这个答案,解释了你可以为你的errorLog设置applicationName:Separate viewer application for ELMAH's log

我查看了ELMAH登录的表格,发现在我尝试将记录/查看分成两个不同的站点之前,它已在“应用程序”列中记录“/ LM / W3SVC / 3 / ROOT”。 / p>

指定applicationName =“/ LM / W3SVC / 3 / ROOT”后,它有效!不幸的是,这个值因机器而异,当下一个人的开发盒碰巧有一个applicationName为“/ LM / W3SVC / 10 / ROOT”时,这个值不会很好。根据这个,该字符串与本地机器名称空间有关:http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/44a57859-8fbb-4238-a7b5-f10c34cf8fe8.mspx?mfr=true

如何在端口8008上获取用于查看日志的站点,以显示从端口80上的站点记录的异常?

1 个答案:

答案 0 :(得分:10)

一旦显式设置了applicationName,这就是它在将异常记录到数据库时应该使用的名称。

如果在两个站点的配置中设置applicationName =“Foo”,则端口80上站点上记录的任何新异常应该对端口8008上的站点可见

如果您需要在此更改之前显示可见的旧错误,则可以将ELMAH_Error表中的Application字段更新为'Foo'

修改

applicationName值设置为web.config

中errorLog元素的属性
    <elmah>
        <security allowRemoteAccess="false" />
        <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sqlserver" applicationName="Foo" />
    </elmah>