You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中ExceptionFilterAttribute的TempData操作与重定向咨询

.NET Core 中 ExceptionFilterAttribute 重定向与 TempData 操作方案

一、重定向写法确认

直接调用 exceptionContext.HttpContext.Response.Redirect(url) 本身可行,但必须标记异常已被处理,否则框架会继续处理该异常,导致重定向失效。正确完整写法如下:

// 标记异常已处理,阻止后续异常流程
exceptionContext.ExceptionHandled = true;
// 执行重定向
exceptionContext.HttpContext.Response.Redirect(url);

二、TempData 的替代操作方案

.NET Core 中 ExceptionFilterContext 不直接暴露 TempData,需通过 ITempDataDictionaryFactory 来创建并操作 TempData 实例,具体分两种场景:

场景1:过滤器通过依赖注入注册

先在过滤器构造函数中注入 ITempDataDictionaryFactory:

private readonly ITempDataDictionaryFactory _tempDataFactory;

public CustomExceptionFilter(ITempDataDictionaryFactory tempDataFactory)
{
    _tempDataFactory = tempDataFactory;
}

然后在 OnException 方法中操作 TempData:

var tempData = _tempDataFactory.GetTempData(exceptionContext.HttpContext);
// 移除指定键的 TempData
tempData.Remove("TargetKey");
// 添加异常信息到 TempData
tempData.Add("ExceptionMsg", exceptionContext.Exception.Message);

场景2:过滤器通过特性标记使用

若过滤器是直接以特性形式标注在控制器/方法上,可从 HttpContext 的服务容器中获取工厂实例:

var tempDataFactory = exceptionContext.HttpContext.RequestServices.GetService<ITempDataDictionaryFactory>();
var tempData = tempDataFactory.GetTempData(exceptionContext.HttpContext);
// 移除操作
tempData.Remove("TargetKey");
// 添加异常信息
tempData.Add("ExceptionMsg", exceptionContext.Exception.Message);

内容的提问来源于stack exchange,提问作者Lucky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:01:23