如何在异常时设置 http header?
How can i set http header on exception?
我想在错误 500 页面上添加自定义 http header,我想在控制器中执行此操作 - 我就是想不通。
这是我试过的:
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");
}
}
}
然而,它没有添加header,所以一定是有问题。
有什么想法吗?
谢谢
发生这种情况是因为您没有处理异常。我强烈建议您在 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;
}
}
}
我想在错误 500 页面上添加自定义 http header,我想在控制器中执行此操作 - 我就是想不通。
这是我试过的:
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");
}
}
}
然而,它没有添加header,所以一定是有问题。
有什么想法吗?
谢谢
发生这种情况是因为您没有处理异常。我强烈建议您在 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;
}
}
}