名前空間をカスタムルートに追加する方法がわかりません。次のものがあります
routes.Add("DomainRoute",
new DomainRoute("{store}.domain.*",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index" },
new string[] { "Mynamespace.Subdomain.Controllers" }));
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" },
new string[] { "Mynamespace.Controllers" });
DomainRoute のコンストラクタは次のとおりです。
public DomainRoute(string domain, string url, object defaultValues, string[] namespaces)
: base(url, new RouteValueDictionary(defaultValues), new MvcRouteHandler())
{
Domain = domain;
if (namespaces != null && namespaces.Length > 0)
{
DataTokens = new RouteValueDictionary();
DataTokens["Namespaces"] = namespaces;
}
}
しかし、このコードを実行すると、次のエラーが表示されます。
「Home」という名前のコントローラーに一致する複数のタイプが見つかりました。これは、このリクエスト ('{controller}/{action}/{id}') を処理するルートが、リクエストに一致するコントローラーを検索するための名前空間を指定していない場合に発生する可能性があります。この場合は、'namespaces' パラメーターを取る 'MapRoute' メソッドのオーバーロードを呼び出して、このルートを登録します。