エラーが発生しています。 asp.net mvc 4のように設定しました。
このオブジェクトにはパラメーターのないコンストラクターが定義されていません。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細と、コードのどこで発生したかについては、スタックトレースを確認してください。
例外の詳細:System.MissingMethodException:このオブジェクトにパラメーターのないコンストラクターが定義されていません。
最後に、実際の例外「HomeControllerタイプのインスタンスを取得しようとしたときにアクティベーションエラーが発生しました、キー ""」
サービスクラスをホームコントローラーに注入しようとするとエラーが発生する
次の手順でうまくいきました。
StructureMap.MVC4
NuGetをインストールします。
Install-Package StructureMap.MVC4
新しいインターフェースを作成します。
public interface IDependency
{
string SayHello();
}
このインターフェースを実装します。
public class ConcreteDepenedency: IDependency
{
public string SayHello()
{
return "Hello World";
}
}
HomeControllerをこのインターフェイスで動作させます。
public class HomeController : Controller
{
private readonly IDependency dependency;
public HomeController(IDependency dependency)
{
this.dependency = dependency;
}
public ActionResult Index()
{
return Content(this.dependency.SayHello());
}
}
~/DependencyResolution/Ioc.cs
でコンテナーを構成します。
using StructureMap;
using WebApplication1.Controllers;
namespace WebApplication1.DependencyResolution {
public static class IoC {
public static IContainer Initialize() {
ObjectFactory.Initialize(x =>
{
x.For<IDependency>().Use<ConcreteDepenedency>();
});
return ObjectFactory.Container;
}
}
}
でアプリケーションを実行する Ctrl+F5
ConcreteDependency
がHomeController
に正常に挿入されました。最新のStructureMap for MVC 5パッケージを使用してこれを機能させる方法を示す詳細なウォークスルーがあります: http://ardalis.com/resolving-dependencies-in-asp.net-mvc-5-with -structuremap
以前公開したASP.NET MVC 3で必要だったものとそれほど違いはありません。 http://ardalis.com/How-Do-I-Use-StructureMap-with-ASP.NET-MVC -
基本的には、正しいNuGetパッケージをインストールし、依存関係を受け入れるようにコントローラーを変更し、IoC.csの実装にインターフェイスを接続します。 StructureMapのデフォルトの規則に従う場合、このワイヤーアップを多くのタイプで自動的に発生させることができます。
StructureMap(2.6.4.1)はASP.NET MVC 5と互換性があり、アップグレード後に何も変更する必要はありません。
ただし、アップグレードプロセスは、思ったほど簡単ではありません。
従わなければならない場合、すべての steps のリストを以下に示します。
PS:私はアップグレード後のリックアンダーソンのチュートリアルに従いました(そして、彼はあなたが前にそれを行うべきだと言っています)が、とにかくうまくいきました。
それが役に立てば幸い。