同じソリューションに、ASP.NET MVC4 アプリケーションSlick.App
とクラス ライブラリがありますAwesome.Mvc.Lib
。Awesome.Mvc.Lib には、1 つのコントローラー クラスが含まれています。
public class ShinnyController : Controller
{
[HttpGet]
public string Index()
{
return "Hello, from Awesome.Mvc.Lib";
}
}
Slick.App から Awesome.Mvc.Lib への参照を追加するだけで、アプリケーションを実行し、ブラウザで/shinny
.
これは私がまったく期待していないことです。ASP.NET MVC は、コントローラーが配置された名前空間を尊重するといつも思っていました。そのため、少なくとも私が要求しない前は、別の名前空間のコントローラーは公開されていません。
namespaces パラメータを使用するように、デフォルトのルート登録を変更しようとしました。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new [] { "Slick.App.Controllers" }
);
それでも、ShinnyController ルートは「/shinny」に引き続き一致します。
これが正しいデフォルトの動作であるという懸念があります。私の質問は、どのコントローラーが公開されているかを明示的に示し、デフォルト ルートが別のクラス ライブラリのコントローラーと一致しないようにする方法です。