2014-11-19 3 views
0

После написания кода в global.asax эта ошибка возникла. Если я держу точку останова, чтобы проверить, что она стреляла и вращалась, и в конечном итоге результаты браузера с вышеупомянутым ответчиком [«Ваше приложение имеет перенаправленные циклы»]. `ваше приложение имеет перенаправленные петли в MVC

public class SessionExpireAttribute : ActionFilterAttribute 
     { 
     public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     HttpContext ctx = HttpContext.Current; 

     // check sessions here 
     if (HttpContext.Current.Session["username"] == null) 
     { 
      filterContext.Result = new RedirectResult("~/Account/Login"); 
      return; 
     } 

     base.OnActionExecuting(filterContext); 
    } 
}` 

Действительно смешно, но почему эта глупая ошибка происходя снова и again.Any идея?

+2

Когда приложение запускается, 'Session [«имя пользователя»]' является недействительным, так что делает редирект, который стреляет в ActionFilter. Значение по-прежнему равно нулю, поэтому оно выполняет перенаправление, которое запускает ActionFilter. Значение по-прежнему равно нулю, поэтому он ... –

ответ

0

Мне очень жаль, я не читал Ваш вопрос правильно

public class SessionExpireAttribute : ActionFilterAttribute 
     { 
     public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     HttpContext ctx = HttpContext.Current; 

     // check sessions here 
     if (HttpContext.Current.Session["username"] == null) 
     { 
      filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { 
        { "Controller", "Accounts" }, 
        { "Action", "Login" } 
        }); 

     } 

     base.OnActionExecuting(filterContext); 
    } 
} 

Надеется, что это работает.

+0

уже сохранил атрибут [AllowAnonymous] для входа в систему ActionResult в контроллере счета –

+0

вы можете рассказать мне, что все attibutes применяются к странице входа и в каком порядке? –

+0

Ответ Обновлено. –

0

Удалить этот ActionFilter из AccountController

0

При перенаправлении на «~/Account/Логин» код OnActionExecuting будет называться снова так HttpContext.Current.Session["username"] == null правда и у вас есть цикл перенаправления.

Итак, вам нужно другое условие для проверки этого

Смежные вопросы