为什么 RedirectResult 在 MVC 中不能正常工作?

Why RedirectResult is not working well in MVC?

我正在处理会话代码。当我的会话结束时,然后转到 global.asax 并重定向到特定的亲戚 URL.

重定向有效,但是重定向时找不到页面。

我的代码有什么问题?

两者都不起作用,无论是 HTTP 还是我的 IP 以及相对路径。

public class SessionExpireAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpContext ctx = HttpContext.Current;
            // check  sessions here
            if (HttpContext.Current.Session["UsuarioActual"] == null)
            {
                 //filterContext.Result = new RedirectResult("[http ip here]");
                filterContext.Result = new RedirectResult("~/Login");
                return;
            }
            base.OnActionExecuting(filterContext);
        }
    }

在我的 global.asax 我有这个

   GlobalFilters.Filters.Add(new SessionExpireAttribute());

尝试:

public class SessionExpireAttribute : ActionFilterAttribute
{
    private RouteValueDictionary LoginRougte()
    {
        return new RouteValueDictionary
        {
            {"action", "Login"},
            {"controller", "Account"},
            {"area", ""}
        };
    }

    private readonly List<string> _exceptCtrls = new List<string> { "userauth", "manager", "account" };

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        var routeData = filterContext.HttpContext.Request.RequestContext.RouteData;
        var controller = routeData != null ? routeData.Values["controller"] as string : string.Empty;
        var check = !string.IsNullOrEmpty(controller) && !_exceptCtrls.Contains(controller.ToLower());

        if (check && (HttpContext.Current.Session == null || HttpContext.Current.Session.Keys.Count == 0))
        {                
            filterContext.Result = new RedirectToRouteResult(LoginRougte());
        } 
        base.OnActionExecuting(filterContext);
    }
}

此代码来自我的实时项目。这对我有用。希望它也适合你。

我解决了它替换这个

filterContext.Result = new RedirectToRouteResult(LoginRougte());

由此

HttpContext.Current.Response.Redirect("~/Login/LogOut");