asp.net-core - 如何在 ASP.NET CORE 3.1 中重定向过滤器
问题描述
我有一个在 ASP.NET CORE 3.1 (C#) 中扩展 IAsyncActionFilter 的属性类。在 OnActionExecutionAsync 方法中,我想重定向到另一个控制器/方法,而不调用初始方法调用中的任何其他过滤器。
我曾尝试在 OnActionExecutionAsync 中使用它:
context.Result = new RedirectToActionResult("MethodName", "Home", null);
await next();
当我这样做时,我收到以下错误:
如果 IAsyncActionFilter 通过将 ActionExecutingContext 的 Result 属性设置为非空值来提供结果值,则它不能通过调用 ActionExecutionDelegate 来调用下一个过滤器。
我可以删除 await next(),然后调用初始方法上的其他过滤器。
我已经广泛搜索了谷歌,但没有找到。
实现此目标的正确语法是什么?
谢谢!
解决方案
我遇到了同样的问题,由于没有人回答,我只是分享我的解决方案。
如果您设置了 Result,请不要调用 next():
context.Result = new RedirectToActionResult("MethodName", "Home", null);
if (context.Result != null)
await next();
推荐阅读
- c++ - 网络管理器 dbus 接口调用无线在 raspbian 上不起作用
- python - 在 pyftpdlid 中过滤目录列表
- windows - 启动容器时,图像中的 Windows 服务无法自动启动
- python - 在基于类的视图中访问当前登录的用户
- python - 使用 break 语句退出循环
- python - 升级Rpy2版本
- javascript - 全屏和关闭全屏 一键点击
- ruby-on-rails - 如何从 Rails 中的 Mongoid 数据生成 CSV 文件
- imagemagick - 带有 imagemagick 的简单闪烁框 gif
- c# - C#:不能使用创建动态对象的库中的 Controls 属性