Webプロジェクトに必要なすべての認証タスクを実行するための領域を追加しました。プロジェクト内のフォルダ構造は次のとおりです。AccountController
でフォームLoginUrl - これをフォーマットするには、どのように領域を扱うのですか?
- Solution
- Web Project
- Areas
- Accounts
- Controllers
AccountController.cs
は通常LogOn(LogOnModel model, string returnUrl)
アクションです。 AccountsAreaRegistration.cs
で
は、自動生成されたルートです:
context.MapRoute(
"Accounts_default",
"Accounts/{controller}/{action}/{id}",
new {
action = "LogOn",
id= UrlParameter.Optional
}
);
私に起こった最初のものは、単にweb.configファイル内loginUrl
属性に地域の名前を追加し、できるようにしましたルートマッピングリダイレクトの世話をする - 非常に簡単、私は考えた:
<forms loginUrl="~/Accounts/Account/LogOn"
timeout="2880" />
唯一の問題は、それが動作しないということです。 「Accounts/Account/Logon」が見つからないというエラーが表示されたり、loginUrl属性に設定した値が何であれ、Web.Configで指定したURLがその値をマッチを探すために、ルートテーブル
*注記:このすべてが私の他のコントローラのいずれかで、アクションの[オーソライズ]属性によってトリガされている
EDIT
回避策。私は、デフォルト( "Account/Logon")としてURLを残し、要求を正しい領域にリダイレクトするためにglobal.asaxに別のルートを追加することを発見しました:
これはジョブを完了しますが、問題に最適な解決策であるかどうかはわかりません。
は、私はあなたがに呼び出していない、あなたのglobal.asax.csの状況より良い –
@ScottSEA を説明するために私の質問を編集した: AreaRegistration.RegisterAllAreasを(); ([リンク] http://msdn.microsoft.com/en-us/library/system.web.mvc.arearegistration.aspx) –