gpt4 book ai didi

c# - 使用自定义错误页面维护错误信息

转载 作者:行者123 更新时间:2023-12-03 08:55:24 25 4
gpt4 key购买 nike

我正在 try catch 404 和 500 错误。我已经阅读了很多 stack over flow 问题和答案,似乎都说他们的方式是最好的。所以我只选择了一个并接受了它。它做了我需要做的事情,但是我似乎无法在任何地方获得实际的错误信息。

我需要开始将这些记录到我们的数据库中,我到底是怎么得到错误的?我想知道他们试图访问的链接等。

这是我过滤掉我们使用 IIS7+ 的错误的方法

<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error/PageNotFound" />
<remove statusCode="500" />
<error statusCode="500" responseMode="ExecuteURL" path="/Error/Error500" />
</httpErrors>

当我逐步执行 PageNotFound 操作时,我似乎无法获得错误信息。

我试过 (Exception exception)作为参数,我尝试过 Exception exception = Server.GetLastError();
如何获取错误,然后将其记录到我们的数据库中?

最佳答案

创建自定义HandleErrorAttribute像这样:

public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
// Execute the normal exception handling routine...
base.OnException(filterContext);

var exception = filterContext.Exception;
if (exception is HttpException)
{
var httpException = exception as HttpException;
if(httpException.ErrorCode == 404)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new {
action = "PageNotFound",
controller = "Error",
error = httpException.Message
}));
}
// else if...
}
}
}

并且,在您的 FilterConfig类下 App_Start :
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomHandleErrorAttribute());
}
}

关于c# - 使用自定义错误页面维护错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27430102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com