Buduję API odpoczynku z Web API2, Owin 3 i NInject Owinhost dla mojego DI.Web Api 2 + OWIN 3 + NInject.Web.WebApi.OwinHost, błąd przy uruchomieniu tylko
Na przykładzie dostarczone przez NInject, przez które tworzę obiekt „HttpConfiguration” i wywołać metody rozszerzenie NInject w startup.cs, otrzymuję błąd:
Error activating HttpConfiguration More than one matching bindings are available. Matching bindings: 1) binding from HttpConfiguration to method 2) self-binding of HttpConfiguration 3) binding from HttpConfiguration to constant value Activation path: 1) Request for HttpConfiguration
Suggestions: 1) Ensure that you have defined a binding for HttpConfiguration only once.
mojego kodu jest jak postępować przy starcie .cs:
public void Configuration(IAppBuilder app)
{
Logger.Info("Entering Startup");
config = new HttpConfiguration();
ConfigureOAuth(app);
// Web API configuration and services
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter("Bearer"));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new {id = RouteParameter.Optional}
);
var appXmlType =
config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(
t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
app.UseNinjectMiddleware(CreateKernel);
app.UseNinjectWebApi(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
Logger.Info("Exiting Startup");
}
public static StandardKernel CreateKernel()
{
kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
kernel.Bind<HttpConfiguration>().ToSelf().Named("TestHttpConfiguration");
return kernel;
}
Najdziwniejsze jest to, kiedy odświeżyć stronę w przeglądarce, błąd idzie, co pozwala mi wierzyć, że to dzieje się tylko do uruchamiania aplikacji.
Więc jestem z tym zdezorientowany. Czy ktoś miał do czynienia z tym samym problemem?
Dzięki
Vincent
Właśnie zacząłem stawić czoło temu problemowi na nowym projekcie również. Oprogramowanie pośrednie wyrzucające ten błąd to: app.UseNinjectWebApi (config); Kiedy to komentuję, wszystko działa zgodnie z oczekiwaniami. Wciąż kopie, aby dowiedzieć się, co się dzieje. – sgmeyer
Głupie przypuszczenie, ale co się stanie, gdy zabierzesz się za HttpConfiguration do TestHttpConfiguration? – sgmeyer
Cześć, dziękuję za odpowiedź mi, niestety nie udało mi się dostać do pracy mój oryginalny projekt. Zobacz moją odpowiedź poniżej sortowałem ją od zera i instalując pakiety za pomocą konsoli. Tak jak Ty, to aplikacja app.useNInjectWebApi spowodowała błąd, ale nie ważne jak sobie z tym poradziłem, nie powiodło się to w tej konfiguracji. Nie jestem pewien, czy ci to pomoże, mam nadzieję, że tak. Daj mi znać. – vm2013