14

我需要根据我在 Visual Studio 中使用的配置更改应用名称。例如,如果我在调试配置中,我希望应用程序名称在 Elmah_Error 表的应用程序字段中显示为“App_Debug”。有人对这个有经验么?还是有其他方法可以做到这一点?

4

2 回答 2

54

这现在可以纯粹在标记中完成。只需在 web.config 文件部分的元素中添加一个applicationName属性。例子:errorLog<elmah>

<errorLog type="Elmah.SqlErrorLog, Elmah" 
    connectionStringName="connectionString" applicationName="myApp"  />

我已经对此进行了测试,它在记录异常和通过Elmah.axd.

在 OP 的情况下,人们会想象它也可以通过编程方式设置,但我没有对此进行测试。对我来说,我想在大多数情况下,标记方法就足够了。

于 2012-02-17T13:46:58.623 回答
6

默认情况下,Elmah 使用 AppPool 的应用程序 GUID 作为默认应用程序名称。当您查看通过其 HTTP 模块创建的 Web 界面时,它使用它作为识别 Elmah_Error 表中错误的关键。

今年早些时候,我的任务是为我的公司探索这个选项。HttpRuntime.AppDomainAppId由于 Elmah 从ErrorLog.cs 文件中提取应用程序名称,因此我无法找到一种默认操作的方法。你可以用任何你想要的键来操作它;但是,那是 AppPool 的 GUID。

话虽如此,我能够操纵 ErrorLog.cs 文件将 Elmah 转变为可调用框架,而不是基于处理程序的框架,并允许我设置 ApplicationName。我最终做的是修改 ErrorLog.cs 以包含一个允许我设置名称的属性,如下所示:

public virtual string ApplicationName
{
    get 
    {
        if (_applicationName == null) {  _applicationName = HttpRuntime.AppDomainAppId; }
        return _applicationName;
    }
    set { _applicationName = value; }
}

您可能需要做的是以不同的方式进行调整,并将 ApplicationName 设置为HttpRuntime.AppDomainAppId不是从 web.config 中提取的值。总而言之,这是可能的。我这样做的方式增强了ErrorLog.Log(ex)方法,因此我可以使用 Elmah 有一个可调用的框架,超出了 Web 应用程序。回想起来,我希望我改为使用 app/web.config 方法。

在 Elmah 中更改应用程序名称时要记住一件事。生成 /elmah/default.aspx 接口的 http 处理程序将不再工作。我仍在努力寻找时间绕回这样的地方;但是,您可能需要在实现时考虑创建自定义接口。

于 2008-11-25T14:06:06.193 回答