为什么 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");
我正在处理会话代码。当我的会话结束时,然后转到 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");