Einfache Injektor - Stellen Sie sicher, dass der controller hat einen parameterlosen public-Konstruktor auf die Produktion

Ich bin stecken mit einem komischen situation. Ich bin nach Onion Architecture und meine Architektur ist so etwas wie dieses:

1-Core
     - Domain Classes
     - Repository Interfaces
     - Service Interfaces
2-Infrastructure
     - Data
     - Dependency Injection //Here I am using Simple Injector as dependency injection
     - Repository Interfaces Implementation
     - Service Interfaces Implementation
3-WebApi
     - Web Api Project
4-WebClient
     - My AngularJs App
5-Test
     - Test Project

Dependency Injection:

[assembly: PreApplicationStartMethod(typeof(IocConfig), "RegisterDependencies")]
namespace Infrastructure.DependencyResolution
{
    public class IocConfig
    {
        public static void RegisterDependencies()
        {
            var container = new Container();

            container.RegisterWebApiRequest<IRepositoryAsync<Category>, Repository<Category>>();
            container.RegisterWebApiRequest<ICategoryService, CategoryService>();
            container.RegisterWebApiRequest<IDataContextAsync>(() => new MyContext());
            container.Verify();
            GlobalConfiguration.Configuration.DependencyResolver =
            new SimpleInjectorWebApiDependencyResolver(container);

        }
    }
}

Web-Api-Projekt:

public class HomeController : ApiController
{
    private readonly ICategoryService _categoryService;
    public HomeController(ICategoryService categoryService)
    {
        _categoryService = categoryService;
    }
}

Alles funktioniert sehr gut auf meinem local IIS. Aber jetzt habe ich veröffentlicht, diese Anwendung auf dem Produktionsserver und jetzt ist er mir folgende Fehlermeldung:

{"message":"Ein Fehler ist aufgetreten.","exceptionMessage":"Ein Fehler
aufgetreten beim Versuch, einen Domänencontroller zu erstellen vom Typ 'HomeController'.
Stellen Sie sicher, dass der controller hat einen parameterlosen public
Konstruktor.","exceptionType":" - System.InvalidOperationException","stackTrace":"
bei
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Erstellen(HttpRequestMessage
Anfrage, HttpControllerDescriptor controllerDescriptor Geben
controllerType)\\r \ \ n bei
System.Web.Http.Controller.HttpControllerDescriptor.CreateController(HttpRequestMessage
Anfrage)\\r \ \ n bei
System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()","innerException":{"message":"Ein
Fehler ist aufgetreten.","exceptionMessage":"Typ
'JetAdz.WebApi.Controller.HomeController " verfügt nicht über eine Standard
constructor","exceptionType":" - System.ArgumentException","stackTrace":"
System.Linq -.Ausdrücke.Ausdruck.Neue(Typ)\\r \ \ n bei
System.Web.Http.Intern.TypeActivator.Erstellen[TBase](Typ
instanceType)\\r \ \ n bei
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage
Anfrage, Type controllerType, Func`1& activator)\\r \ \ n bei
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Erstellen(HttpRequestMessage
Anfrage, HttpControllerDescriptor controllerDescriptor Geben
controllerType)"}}

InformationsquelleAutor Usman Khalid | 2015-08-23

Schreibe einen Kommentar