我需要根据我在Visual Studio中使用的配置更改应用名称。例如,如果我在调试配置中,我希望应用程序名称在Elmah_Error表的Application字段中显示为'App_Debug'。有人对这个有经验么?或者还有另一种方法吗?
答案 0 :(得分:53)
现在可以完全用标记来完成。只需将applicationName
属性添加到web.config文件的errorLog
部分中的<elmah>
元素即可。例如:
<errorLog type="Elmah.SqlErrorLog, Elmah"
connectionStringName="connectionString" applicationName="myApp" />
我已经对此进行了测试,它在记录异常和通过Elmah.axd
查看日志时都有效。
在OP的情况下,可以想象它也可以以编程方式设置,但我没有测试。对于我和我来说,在大多数情况下,标记方法都足够了。
答案 1 :(得分:6)
默认情况下,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处理程序将不再起作用。我还在努力抽出时间绕回去;但是,您可能需要在实现时考虑创建自定义界面。