8

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

进行日志记录的站点在端口 80 上运行,显示日志的站点在端口 8008 上。起初,我无法从日志记录站点看到异常。然后我找到了这个答案,它解释了你可以为你的错误日志设置应用程序名称:ELMAH 日志的单独查看器应用程序

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

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

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

4

1 回答 1

14

一旦明确设置了 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>
于 2012-09-23T01:41:18.637 回答