Sto scrivendo l'API Web utilizzando Iniezione di dipendenza, Unità di lavoro con l'aiuto di repository e Autofac come contenitore. Dipendenza si stava iniettato perfettamente 24 ore fa, ma improvvisamente quando ho iniziato oggi a lavorare ho continuato a ricevere l'erroreWebApi DI Autofac - Assicurarsi che il controllore disponga di un costruttore pubblico senza parametri
"messaggio": "Si è verificato un errore", "ExceptionMessage": "un errore è verificato durante il tentativo per creare un controller di tipo 'SearchController' assicurarsi che il controller ha un costruttore senza parametri pubblica ", "ExceptionType..": "System.InvalidOperationException",
I comprenderà le mie firme e come mi sto registrando i tipi e sarei davvero felice se qualcuno potesse indicarmi quale mi Non posso sbagliare con il mio codice.
Il mio controller Web API, ho
private IUnitOfWork<Listing> _unitOfWork = null;
public SearchController(IUnitOfWork<Listing> unitOfWork)
{
_unitOfWork = unitOfWork;
}
unità di lavoro prende il parametro di tipo generico per creare repository.
Nei miei WebApiConfig.cs, che sto registrando i tipi come sotto
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
builder.RegisterGeneric(typeof(UnitOfWork<>)).As(typeof(IUnitOfWork<>)).InstancePerDependency();
builder.RegisterType(typeof(SearchController)).UsingConstructor(typeof(IUnitOfWork<Listing>));
Sto registrando il SearchController per utilizzare il costruttore che prende in IUnitOfWork <>. Funzionava tutto bene prima di aver aggiunto i test di unità Mocked ma per qualche motivo continuo a ricevere questo errore ora. Ho anche registrato il DependencyResolver
var container = builder.Build();
var resolver = new AutofacWebApiDependencyResolver(container);
config.DependencyResolver = resolver;
Ali, ho provato il vostro esempio e ottengo lo stesso errore "costruttore pubblico senza parametri" per WebAPI. È lo stesso messaggio se ho usato il codice MVC AutoFac. Ho questo nelle applicazioni MVC, ma in perdita su questo. C'è qualche altra direzione che puoi condividere? –