有什么方法可以在Elmah中以编程方式设置应用程序名称?

时间:2020-03-06 14:55:21  来源:igfitidea点击:

我需要根据我在Visual Studio中使用的配置来更改应用程序名称。例如,如果我处于Debug配置中,则我希望应用程序名称在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设置为不是HttpRuntime.AppDomainAppId,而是从web.config中提取一个值。总而言之,这是可能的。我这样做的方式增强了ErrorLog.Log(ex)方法,因此我可以使用Elmah拥有Web应用程序以外的可调用框架。回顾过去,我希望我改为使用app / web.config方法。

在Elmah中更改应用程序名称时要记住的一件事。生成/elmah/default.aspx接口的http处理程序将不再起作用。我仍在尝试寻找时间来回想一下;但是,我们可能需要在实施时考虑创建自定义界面。