为什么RedirectResult在MVC中运行不正常?

时间:2018-04-23 22:59:00

标签: c# asp.net-mvc session iis-7

我正在使用会话代码。当我的会话结束时,然后转到global.asax并重定向到特定的相对URL。





重定向有效,但重定向时,无法找到该页面。





我的代码出了什么问题?





两者都无法正常工作,与HTTP和我的IP相关路径。




 公共类SessionExpireAttribute:ActionFilterAttribute
 {
 public override void OnActionExecuting(ActionExecutingContext filterContext)
 {
 HttpContext ctx = HttpContext.Current;
 //在这里检查会议
 if(HttpContext.Current.Session [“UsuarioActual”] == null)
 {
 //filterContext.Result = new RedirectResult(“[http ip here]”);
 filterContext.Result = new RedirectResult(“〜/ Login”);
返回;
 }
 base.OnActionExecuting(filterContext);
 }
 }
  




在我的global.asax中我有这个




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



2 个答案:

答案 0 :(得分:0)

尝试:

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);
    }
}

我的直播项目中的代码。这是我的工作。希望它也适合你。

答案 1 :(得分:0)

我解决了它取代了这个

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

通过这个

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