我想在错误500页面上添加自定义http标头,我想在控制器中执行此操作 - 我无法弄明白。
这就是我的尝试:
public virtual void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception is HttpException)
{
var statusCode = ((HttpException) filterContext.Exception).GetHttpCode();
if (statusCode >= 500 && statusCode < 600)
{
filterContext.RequestContext.HttpContext.Response.AddHeader("Custom-Key", "error");
}
}
}
但是,它没有添加标题,所以必定是错误的。
有什么想法吗?
由于
答案 0 :(得分:1)
这种情况正在发生,因为您错过了处理异常的问题。我强烈建议您在try catch块中执行此操作(如果这样做,您将无法在OnException
方法中捕获此异常)。
但只是为了回答你的问题,你需要告诉上下文这个异常是否已被处理。您需要以下一行:
filterContext.ExceptionHandled = true;
全部:
public virtual void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception is HttpException)
{
var statusCode = ((HttpException)filterContext.Exception).GetHttpCode();
if (statusCode >= 500 && statusCode < 600)
{
filterContext.RequestContext.HttpContext.Response.AddHeader("Custom-Key", "error");
filterContext.ExceptionHandled = true;
}
}
}