asp.net - 有没有办法从 MVC 过滤器再次运行请求
问题描述
有没有办法从 MVC 异常过滤器再次运行请求?
当我在异常过滤器中处理异常时,我想再次调用该请求。
解决方案
假设我们有以下操作,并且我们定义了一个自定义异常过滤器,如下所示。现在,如果未提供 id 或向 id 提供了字符串值,此操作将生成错误。
[CustomExceptionFilter]
public string Welcome(int id)
{
return id.ToString();
}
现在随着动作抛出错误。以下异常过滤器将处理其余情况。我在这个异常过滤器中所做的是,这将从 RouteData 中选择控制器名称和动作名称,生成一个随机值并重定向回这个动作。
这只是我想到的一个例子,当然你可以用它尝试不同的东西。
public class CustomExceptionFilter : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
if (!filterContext.ExceptionHandled)
{
var rd = HttpContext.Current.Request.RequestContext.RouteData;
string controllerName = rd.GetRequiredString("controller");
string actionName = rd.GetRequiredString("action");
filterContext.Result = new RedirectResult($"/{controllerName}/{actionName}/{ new Random().Next(100, 200) }");
filterContext.ExceptionHandled = true;
}
}
}
推荐阅读
- javascript - 通过组件发送数据
- python - 如何调用缓存清除类方法?
- flutter - 将 Flutter Apk 上传到 Play 商店时出现版本代码错误
- python - 如何从 FastAPI 中的 UploadFile 获取文件路径?
- python - 皮蒙戈 | 以相反的顺序提取文档
- javascript - 在 2 个值之间增加一个数字并处理范围的限制
- azure - 在托管应用程序部署中使用“Microsoft.Insights/scheduledQueryRules”失败
- amazon-s3 - 雪花 - 从 S3 复制,但包含加载日期
- javascript - HTML5 输入类型范围值气泡
- c - C编程打印从函数返回的二维动态数组