0

セッションの有効期限が切れたら、ユーザーをログイン ページにリダイレクトしたいと考えています。そのため、クラスを追加して ActionFilterAttribute から継承したので、アクションが実行されようとしているときはいつでも確認できます。テストとして、私はこのコードを入れました:

 public class SessionFilters : ActionFilterAttribute
 {
     public override void OnActionExecuting(ActionExecutingContext filterContext)
     {
          var defaults = new RouteValueDictionary {{"Controller", "Home"}, {"Action", "About"}};
          filterContext.Result = new RedirectToRouteResult(defaults);
          base.OnActionExecuting(filterContext);
      }
  }

ご覧のとおり、About ビューへのリダイレクトを強制していますが、ブラウザーに次のエラーが表示されます。

  The webpage at http://localhost:58494/Home/About has resulted in too many redirects.
  Clearing your cookies for this site or allowing third-party cookies may fix the 
  problem. If not, it is possibly a server configuration issue and 
  not a problem with your computer.

このメソッドを使用して別のビューに正しくリダイレ​​クトするにはどうすればよいですか? ありがとう

更新気にしないでください。ホーマー・シンプソンの瞬間がありました。私が定義したのは無限ループなので、ブラウザーは「これを忘れる」ようでした。コードは機能しています..

4

1 に答える 1

2

HomeController 全体を[SessionFilters]属性で装飾せず、about にリダイレクトする必要があるアクションのみを装飾したことを確認してください。コントローラ全体をアクション フィルタで装飾した場合、明らかにこのフィルタは About を含むすべてのアクションに適用されるため、無限のリダイレクト ループが発生します。

于 2012-05-31T14:28:15.627 に答える