MVCプロジェクトを複数の領域に分割しようとしています。だから私は3つの領域1)crm 2)サービス3)Webを持っています。私はPublicWebをデフォルトのものにします。これは、www.mysitename.com/mycontroller/myaction(その間のエリア名なし)とエリア名(www.mysitename.com/crm/mycontroller/myaction)でアクセスする他の2つのようにアクセスする必要があることを意味します。どんなルーティング/エリア設定が必要ですか?私はAreaRegistration.RegisterAllAreas();
を試して、それは私のデフォルトの1つ(ウェブ)のためにのみ動作します。私は他の2つにアクセスすると、404エラーを投げた。ASP.NET MVCエリアルーティングがデフォルトルートで動作しない
私は1つ
var area2reg = new crmAreaRegistration();
var area2context = new AreaRegistrationContext(area2reg.AreaName, RouteTable.Routes);
area2reg.RegisterArea(area2context);
var area1reg = new webAreaRegistration();
var area1context = new AreaRegistrationContext(area1reg.AreaName, RouteTable.Routes);
area1reg.RegisterArea(area1context);
下記その後、私のpublicweb作品のようindidually登録してみました。しかし、フォーラムにアクセスしたときにこのエラーが発生しました。
「home」というコントローラに一致する複数のタイプが見つかりました。これは、このリクエスト( 'crm/{controller}/{action}/{id}')を処理するルートが、要求に一致するコントローラを検索するための名前空間を指定していない場合に発生します。このような場合は、 'namespaces'パラメータを取る 'MapRoute'メソッドのオーバーロードを呼び出してこのルートを登録します。
web
のための私のRegisterArea機能は、この
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"web_default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
あるとcrm
のための1つが、私はこれを処理するにはどうすればよいこの
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"crm_default",
"crm/{controller}/{action}/{id}",
new { controller = "home", action = "Index", id = UrlParameter.Optional }
);
}
}
のですか?
はい、私はデフォルトのルーティングとエリアを一緒に使用することをたくさん試しました。これが正しい解決策でなければなりません。 –