1

これはランダムなもので、私は困惑しています。

新しい属性ルーティング機能を利用できるように、プロジェクトを 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 を超えると機能します。

彼が何をファッジしているのか知っている人はいますか??!!

4

1 に答える 1