加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

.net – ActionFilterAttribute不重定向

发布时间:2020-12-16 04:24:30 所属栏目:asp.Net 来源:网络整理
导读:我有一个没有正确重定向的ActionFilterAttriute的问题.我不熟悉完整的代码库,但我已经看到了不知道发生了什么. 为了简化代码,我删除了不相关的部分: public class ResolveApplicationRedirectAttribute : ActionFilterAttribute{ //some variables private
我有一个没有正确重定向的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方法.

任何有助于指出我正确方向的帮助都将在这里受到赞赏.

解决方法

1表示Wouter的结果.鉴于您展示的代码,不可能实现您描述的结果.也许//魔术逻辑在这里返回一个null _filterContext.Result?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读