我有一个没有正确重定向的ActionFilterattriute的问题.我不熟悉完整的代码库,但我已经看到了不知道发生了什么.
public class ResolveApplicationRedirectAttribute : ActionFilterattribute { //some variables private ActionExecutingContext _filterContext; protected string ApplicationRedirectUrl { get { return ConfigurationManager.AppSettings["ApplicationRedirectUrl"]; } } public override void OnActionExecuting(ActionExecutingContext filterContext) { _filterContext = filterContext; //a lot of logic that decide if we should redirect or not //I added this after the other logic to make it always redirect regardless of what happens inside the logic above _filterContext.Result = new RedirectResult(ApplicationRedirectResult); } } [ResolveApplicationRedirect] public ActionResult Index(Crmquerystringparameters crmParameters){ //some logic }
这通常有效,但是当应用程序在短时间内受到一些请求的影响时,Index方法最终被调用,并且因为View缺少某些数据而爆炸(我们知道它缺少数据.这就是为什么我们想重定向).
但是现在当我添加_filterContext.Result = new RedirectResult(ApplicationRedirectResult)作为OnActionExecuting方法的最后一行时,它怎么可能仍然调用我的Action方法?
是否有任何知道错误/角落案例/任何其他可能导致MVC忽略RedirectResult我已经放入filterContext并激活动作方法的东西?
即使我将filterContext.Result设置为最后一行,OnActionExecuting逻辑中可能导致问题的任何特殊内容.属性中的任何异常都应该将其炸毁,而不是跳过属性并调用Action方法.
任何有助于指出我正确方向的帮助都将在这里受到赞赏.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。