gpt4 book ai didi

.net - ActionFilterAttribute 不重定向

转载 作者:行者123 更新时间:2023-12-02 05:07:32 26 4
gpt4 key购买 nike

我遇到了 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 方法的最后一行时,它怎么可能仍然调用我的行动方法?

是否有任何已知的错误/极端情况/其他任何可能导致 MVC 忽略我放入 filterContextRedirectResult 并无论如何触发操作方法?

即使我将 filterContext.Result 设置为最后一行,OnActionExecuting 逻辑中的任何特殊内容也可能导致问题。属性内的任何异常都应该将其炸毁,而不是跳过该属性并调用 Action 方法。

任何帮助我指明正确方向的帮助都将不胜感激。

最佳答案

Wouter 的结果+1。鉴于您所显示的代码,应该不可能实现您所描述的结果。也许这里的//魔法逻辑返回了一个空的_filterContext.Result

关于.net - ActionFilterAttribute 不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18402526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com