これはランダムなもので、私は困惑しています。
新しい属性ルーティング機能を利用できるように、プロジェクトを WebAPI 2 に更新しました。公式サイトのチュートリアルに従い、最終的にグローバル ファイルの構成を次のようにしました。
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
次に、WebApiConfig
クラスで属性ルーティングを次のように設定しています。
public static void Register(HttpConfiguration config)
{
config.DependencyResolver = new DependencyResolverFactory();
config.MapHttpAttributeRoutes();
}
次に、ルート「api/users/{id}」を使用したアクション メソッドが必要です。
[Route("api/users/{id}")]
public UserAccountModel GetUserAccount(string id)
{
return _userAccountService.GetAccountDetails(id);
}
これまでのところ、これはすべて私には良さそうです。ただし、このルートにアクセスしようとすると、例外が発生します。
IControllerFactory 'withomph.Common.Ioc.DependencyControllerFactory' は、名前 'api' のコントローラーを返しませんでした。
MVCコントローラーのDependencyControllerFactory
依存性注入を行っている場所なので、なぜそこに行くのかわかりません。
奇妙なことに、ルートを変更して余分な部分を追加すると、次のようになります。
[Route("api/users/test/{id}")]
public UserAccountModel GetUserAccount(string id)
{
return _userAccountService.GetAccountDetails(id);
}
できます!私はこれをいくつかの異なるコントローラーで、異なる名前で、api を使用して、api を使用せずに試してみました。そして、常に同じです: ルートに 4 つ未満の部分がある場合、それは機能しません。4 を超えると機能します。
彼が何をファッジしているのか知っている人はいますか??!!