J'obtiens en dessous de l'erreur. Je l'ai configuré comme asp.net mvc 4.
Aucun constructeur sans paramètre défini pour cet objet. Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.
Détails de l'exception: System.MissingMethodException: aucun constructeur sans paramètre défini pour cet objet.
Enfin trouvé l'exception réelle "Une erreur d'activation s'est produite lors de la tentative d'obtention de l'instance de type HomeController, clé" ""
Une erreur se produit lorsque je vais injecter une classe de service au contrôleur domestique
Les étapes suivantes ont fonctionné pour moi:
Installez le StructureMap.MVC4
NuGet:
Install-Package StructureMap.MVC4
Créez une nouvelle interface:
public interface IDependency
{
string SayHello();
}
Implémentez cette interface:
public class ConcreteDepenedency: IDependency
{
public string SayHello()
{
return "Hello World";
}
}
Faites fonctionner le HomeController avec cette interface:
public class HomeController : Controller
{
private readonly IDependency dependency;
public HomeController(IDependency dependency)
{
this.dependency = dependency;
}
public ActionResult Index()
{
return Content(this.dependency.SayHello());
}
}
Configurez votre conteneur dans ~/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;
}
}
}
Exécutez votre application avec Ctrl+F5
ConcreteDependency
est correctement injecté dans HomeController
.J'ai une procédure détaillée montrant comment faire fonctionner cela en utilisant le dernier package StructureMap pour MVC 5 ici: http://ardalis.com/resolving-dependencies-in-asp.net-mvc-5-with -structuremap
Ce n'est pas si différent de ce qui était nécessaire dans ASP.NET MVC 3, que j'ai déjà publié: http://ardalis.com/How-Do-I-Use-StructureMap-with-ASP.NET-MVC -
Fondamentalement, vous installez simplement le package NuGet correct, modifiez vos contrôleurs pour accepter les dépendances et connectez vos interfaces à vos implémentations dans IoC.cs. Si vous suivez la convention par défaut de StructureMap, vous pouvez faire en sorte que ce câblage se produise automatiquement pour de nombreux types.
StructureMap (2.6.4.1) est compatible avec ASP.NET MVC 5 et vous n'avez rien à changer après la mise à niveau.
Le processus de mise à niveau, cependant, n'est pas aussi simple que vous ne le pensez.
Voici une liste de toutes les étapes si vous devez suivre.
PS: J'ai suivi le tutoriel de Rick Anderson après la mise à niveau (et il dit que vous devriez le faire avant) mais cela a quand même fonctionné.
J'espère que ça aide.