問題を説明するためにどのタイトルを使用すればよいのか、本当にわかりません。私の問題を単純化するために。これが私のテストです。mvc3サイトを最初から作成します。次に、「admin」という領域を追加します。admin内には、「Search」という名前のコントローラーがあり、「Authorize」属性が装飾されています。次に、Global.ascx.csルート設定を変更して、コントローラーの名前空間を追加しました。今、私は私のテストを開始します。
質問1
http:// localhost:xxx / Searchページにアクセスすると、/ Account / Logonページにリダイレクトされます。最初に混乱しますが、なぜログオンページにリダイレクトされるのですか?私が理解しているように、管理者検索コントローラーにはまったく届かないはずです。Authorize属性を削除すると、期待どおりにビューが見つからないという黄色の画面が表示されます。
質問2
(Roles = "Admin")などの役割でAuthorize属性を追加すると、ログインが成功したかどうかに関係なく、検索ページへのアクセスを再試行します。常にログオンページにリダイレクトされます。黄色の画面が表示されないのはなぜですか。管理エリアではなく、メインサイトの検索コントローラーのインデックスビューをリクエストしようとしています。かなり混乱します。
私はMVC開発の初心者ですが、誰かが私の問題に関する解決策を教えてくれますか?
ありがとう
Global.ascx.cs
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[]{"TestAreaRouting.Controllers"}
);
}