7
è possibile iniettare dipendenze nella classe WebApiConfig utilizzando Ninject?Iniezione di dipendenze di Ninject in WebApiConfig in Web API 2
Questa è la mia classe WebApiConfig.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Services.Replace(typeof(IExceptionHandler), new ErrorHandlerMessageHandler(*NEEDS DEPENDENCY*));
}
}
E questa è la mia dichiarazione NinjectHttpApplication
public class WebApiApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
GlobalConfiguration.Configure(WebApiConfig.Register);
}
protected override IKernel CreateKernel()
{
var kernel = new StandardKernel();
RegisterServices(kernel);
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;
}
private void RegisterServices(IKernel kernel)
{
//bindings
}
}
grazie questo post mi ha aiutato, ma penso che alcuni abbiano già questa classe di NinjectWebCommon se stanno aggiungendo WebAPI a un progetto MVC esistente. Ho scoperto che la seguente riga era tutto ciò di cui avevo bisogno di aggiungere: 'GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver (_kernel);' dopo la chiamata 'RegisterServices (_kernel)' nel metodo 'CreateKernel'. Si noti che questo è il 'NinjectDependencyResolver' dallo spazio dei nomi' Ninject.Web.WebApi' (potrebbe essere necessario scaricare il pacchetto NuGet separato). Grazie! – Jordan
Sto ancora cercando di capire come farlo. La mia classe NinjectWebCommon contiene già quella linea, tuttavia anche io ho una proprietà decorata con l'attributo [Inject], la dipendenza non viene iniettata. qualche idea? –
Hai spostato il tuo blog? Sembra che non sia più disponibile. –