Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ELMAH日志如何按类型忽略错误_Asp.net_Elmah - Fatal编程技术网

Asp.net ELMAH日志如何按类型忽略错误

Asp.net ELMAH日志如何按类型忽略错误,asp.net,elmah,Asp.net,Elmah,你好,我已经在我的项目中设置了ELMAH,但是我得到了很多错误,比如 System.Web.HttpException:潜在危险的请求。路径值 从客户端(:)检测到 生成时间:2013年5月26日星期日格林尼治标准时间21:46:30 System.Web.HttpException(0x80004005):潜在危险 从客户端(:)检测到请求。路径值。在 位于的System.Web.HttpRequest.ValidateInputPrequiredByConfig()中 System.Web.

你好,我已经在我的项目中设置了ELMAH,但是我得到了很多错误,比如

System.Web.HttpException:潜在危险的请求。路径值 从客户端(:)检测到

生成时间:2013年5月26日星期日格林尼治标准时间21:46:30

System.Web.HttpException(0x80004005):潜在危险 从客户端(:)检测到请求。路径值。在 位于的System.Web.HttpRequest.ValidateInputPrequiredByConfig()中 System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext (上下文)

我想忽略它们,不要发送给我的邮件,而是用ELMAH DB写。
有可能吗?

是的,您可以在ELMAH中执行此操作,而且它是。简而言之,您的
web.config
中的以下过滤器应该可以完成这项工作(假设您已经设置了模块配置部分):



这样就不会发生邮寄

一个不涉及正则表达式的解决方案,只需将其添加到Global.asax.cs:

protected void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs e)
{
    if (e.Message == "A potentially dangerous Request.Path value was detected from the client (:).")
        e.Dismiss();
}

// this method may also be useful
protected void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
    if (e.Message == "A potentially dangerous Request.Path value was detected from the client (:).")
    {
        // do something
    }
}
也可以将这两种方法结合使用:

void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs args)
{
    Filter(args);
}

void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs args)
{
    Filter(args);
}

void Filter(ExceptionFilterEventArgs args)
{
    if (args.Exception.GetBaseException() is HttpRequestValidationException)
        args.Dismiss();
}

这与我的代码库中的问题相反。我仍然发送电子邮件,但不记录到数据库。有两个功能,一个用于从日志中筛选,另一个用于筛选电子邮件。需要使用ErrorMail_筛选函数而不是ErrorLog_筛选从电子邮件中删除,因为某种原因,
args.Exception.GetBaseException()为HttpRequestValidationException
未计算为true。因此,我建议检查异常的message属性,看看它是否包含错误。我无法让它停止发送“System.InvalidOperationException:请求的资源只能通过SSL访问。”我的模式是:@RhysStephens您应该有一个
节点,所以第二个节点被忽略。您需要
将您的404和消息模式案例组合在一起,然后
,我们可以从那里开始吗?
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs args)
{
    Filter(args);
}

void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs args)
{
    Filter(args);
}

void Filter(ExceptionFilterEventArgs args)
{
    if (args.Exception.GetBaseException() is HttpRequestValidationException)
        args.Dismiss();
}