我需要根据我在Visual Studio中使用的配置更改应用名称。例如,如果我在调试配置中,我希望应用程序名称在Elmah_Error表的Application字段中显示为'App_Debug'。有人对这个有经验么?或者还有另一种方法吗?

有帮助吗?

解决方案

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

我的任务是在今年早些时候为我的公司探索这个选项。由于Elmah在ErrorLog.cs文件中从HttpRuntime.AppDomainAppId中提取应用程序名称,因此我无法找到默认操作方法。你可以用你想要的任何键来操纵它;但是,那就是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设置为ErrorLog.Log(ex),而是从web.config中提取一个值。总而言之,这是可能的。我这样做的方式增强了<=>方法,所以我可以使用Elmah在Web应用程序之外有一个可调用的框架。回顾我希望我做了app / web.config方法。

在Elmah中更改应用程序名称时要记住一件事。生成/elmah/default.aspx接口的http处理程序将不再起作用。我还在努力抽出时间绕回去;但是,您可能需要在实现时考虑创建自定义界面。

其他提示

现在可以完全用标记来完成。只需将applicationName属性添加到web.config文件的errorLog部分中的<elmah>元素即可。例如:

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

我已经对此进行了测试,它在记录异常和通过Elmah.axd查看日志时都有效。

在OP的情况下,可以想象它也可以以编程方式设置,但我没有测试。对于我和我来说,在大多数情况下,标记方法都足够了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top