0

したがって、私が現在取り組んでいるプロジェクトでは、1 つの VS 2013 ソリューションの一部として 1 つの MVC プロジェクトと 5 つの MVC/Web API プロジェクトがあります。MVC のみのプロジェクトは、消費者向けであるため、スタートアップ Web サイトとして選択されます。残りの 5 つのプロジェクトは、データのフェッチとプッシュのために API コントローラーを呼び出すこの MVC プロジェクトによって参照されます。

現在、Unity Bootstrapper、Unity.MVC、および Unity.WebAPI Nuget パッケージが MVC Web サイトに面している顧客にインストールされており、個々の Web API プロジェクトを呼び出すと、DI は問題なく機能します。

ここで、5 つの MVC/Web API プロジェクトを個別にテストできる必要があるという要件もあります。そこでは、テスト用の .cshtml カミソリ ビューを作成し、API コントローラーを呼び出す MVC コントローラーをテストします。現在、MVC/Web API プロジェクトは個別に実行されており、MVC Web サイト経由で呼び出されていないため、依存関係を結び付ける IOC はありません。そこで、上記の Nuget パッケージを 5 つのプロジェクトのそれぞれにインストールし、それらに必要な依存関係を結び付けました。これで、個々のプロジェクトはそれぞれ正常に機能しました。

ただし、メインの MVC プロジェクト/Web サイトを実行すると、参照されているすべての MVC/Web API プロジェクトで Unity Bootstrappers が起動され、以前にインスタンス化された Unity コンテナーが上書きされます。基本的に、最後の MVC/Web API プロジェクトは、その Unity コンテナーを Web サイトの DI コンテナーとして提供します。

これを修正する方法はありますか?Web API プロジェクトごとに UnityExtensions を作成し、MVC プロジェクトで個別に接続する必要がありますか?

4

1 に答える 1

0

私たちのプロジェクトにも同じ問題があり、インターフェイスを作成したばかりの別のプロジェクトを作成することで解決しました。ブートストラップは、具体的な実装でインターフェイスをマップしたソリューションの共通ファイルでした。これは、プログラムのテストとスムーズな実行に役立ちました。

于 2014-01-03T14:25:08.687 に答える