Ich habe eine Bindung für HttpContextBase in meiner NinjectWebCommon.RegisterServices-Methode erstellt, aber wenn ich versuche, es in meinen Controllern oder Diensten zu verweisen, erhalte ich eine Fehlermeldung.Wie wird HttpContextBase mit Ninject registriert? Ich habe es nicht explizit gebunden
Hier ist die Bindung:
kernel.Bind<HttpContextBase>().ToMethod(context => new HttpContextWrapper(HttpContext.Current)).InRequestScope();
Hier ist die Fehlermeldung:
Error activating HttpContextBase
More than one matching bindings are available.
Activation path:
2) Injection of dependency HttpContextBase into parameter abase of constructor of type HomeController
1) Request for HomeController
Suggestions:
1) Ensure that you have defined a binding for HttpContextBase only once.
Wenn ich die Bindung zu entfernen, dann scheint es, zu tun, was ich (beschließt zu HttpContextWrapper) wollte, aber ich Ich frage mich, wie das registriert wird?
Warum nimmt Ihr 'HomeController' ein 'HttpContextBase' Konstruktor Parameter? Warum registrieren Sie die 'HttpContextBase' in Ihrem DI-Container? Das ist völlig bedeutungslos. –
Dies ist ein bisschen ein künstliches Beispiel und ich verstehe Ihre Gefühle in der Sache, aber ich bin neugierig, wie es hinter den Kulissen verdrahtet ist. Ich kontrolliere normalerweise, was registriert ist, und in diesem Fall scheint es, dass Ninject es für mich tut. – BlakeH
Da hast du deine Frage selbst beantwortet: "Es scheint, dass Ninject es für mich tut". –