2

私のこの質問に似たスタックオーバーフローに関する質問はたくさんありますが、誰も私の問題を解決していません

私はMVC4インターネットアプリケーションを使用していましたが、MVCコントローラーはほとんどなく、依存性注入のために使用してStructure mapいました。依存性注入は MVC コントローラーで正常に動作しますが、同じ MVC インターネット アプリケーションに WebApi コントローラーを追加し、MVC コントローラーで使用しているものと同じパラメーターを WebApi コントローラーのコンストラクターで使用すると、依存性注入は WebApi コントローラーでは機能しませんが、 WebApi コントローラー (パラメーターなしのコンストラクター) に依存性注入を使用しない場合は正常に動作しますが、WebApi 依存性注入 (パラメーター化されたコンストラクター) の場合はエラーがスローされますNo parameter less constructor is found

結論依存関係は、インターネット (MVC アプリケーション) の WebApi コントローラーに注入されていません。

を使用することをお勧めする記事はほとんどありませんDependencyResolver.SetResolver()。使用しましたが、問題は解決しませんでした。

4

3 に答える 3

2

WebApi コントローラーが機能しなかった理由は次のとおりです。

MVC コントローラーは、System.Web.MVC .dll の一部であり、System.Web.MVC 名前空間内にある別の DependenyResolver インスタンスを使用するため

http://msdn.microsoft.com/en-us/library/system.web.mvc.idependencyresolver(v=vs.98).aspx

Api コントローラーは、System.Web.Http の一部である DependencyResolver インスタンスを使用します。

http://msdn.microsoft.com/en-us/library/system.web.http.dependencies.idependencyresolver(v=vs.108).aspx

于 2013-03-25T09:10:05.700 に答える
1

MVC および WebAPI コントローラーには、依存関係リゾルバーを設定する別の方法があります。これは、Unity の依存関係リゾルバーを設定する方法です。

public void ConfigureForMvc4()
{
    DependencyResolver.SetResolver(
        new UnityMvc4.UnityDependencyResolver(Container));
}

public void ConfigureForWebApi()
{
    GlobalConfiguration.Configuration.DependencyResolver =
        new UnityWebApi.UnityDependencyResolver(Container);
}
于 2013-03-19T10:55:48.413 に答える