我刚开始使用ELMAH
,但我想尝试将GUID传递给错误页面。
我尝试了this文章所讨论的内容,但我无法触发ErrorLog_Logged。任何想法为什么会发生这种情况。我是否需要在web.config文件中添加一些其他配置? (对不起提前格式化下面的代码,无法正确显示)。
谢谢,
以下是我的web.config文件的内容:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="telerik.web.ui">
<section name="radScheduler" type="Telerik.Web.UI.RadSchedulerConfigurationSection, Telerik.Web.UI" allowDefinition="MachineToApplication" requirePermission="false"/>
<section name="radCompression" type="Telerik.Web.UI.RadCompressionConfigurationSection, Telerik.Web.UI, PublicKeyToken=121fae78165ba3d4" allowDefinition="MachineToApplication" requirePermission="false"/>
</sectionGroup>
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
</sectionGroup>
以下是我的global.asax
文件
void ErrorLog_Logged(object sender, ErrorLoggedEventArgs args)
{
//if (args.Entry.Error.Exception is HandledElmahException)
// return;
var config = WebConfigurationManager.OpenWebConfiguration("~");
var customErrorsSection = (CustomErrorsSection)config.GetSection("system.web/customErrors");
if (customErrorsSection != null)
{
switch (customErrorsSection.Mode)
{
case CustomErrorsMode.Off:
break;
case CustomErrorsMode.On:
FriendlyErrorTransfer(args.Entry.Id, customErrorsSection.DefaultRedirect);
break;
case CustomErrorsMode.RemoteOnly:
if (!HttpContext.Current.Request.IsLocal)
FriendlyErrorTransfer(args.Entry.Id, customErrorsSection.DefaultRedirect);
break;
default:
break;
}
}
}
void FriendlyErrorTransfer(string emlahId, string url)
{
Response.Redirect(String.Format("{0}?id={1}", url, Server.UrlEncode(emlahId)));
}
答案 0 :(得分:1)
在你的web.config中确保你有
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
即
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
同时添加
Elmah.ErrorLogModule logModule = new Elmah.ErrorLogModule();
logModule.Logged += new Elmah.ErrorLoggedEventHandler(logModule_Logged);
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
到您的Application_Error
功能。