我正在为我的DI构建Web API2,Owin 3和NInject Owinhost的其余API。Web Api 2 + OWIN 3 + NInject.Web.WebApi.OwinHost,仅在启动时出错
使用NInject提供的示例中,我创建一个“HttpConfiguration”对象,并调用startup.cs的NInject扩展方法,我得到一个错误:
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.
我的代码遵循启动.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;
}
奇怪的是,当我在浏览器中刷新页面时,错误消失了,这导致我相信这只发生在应用程序启动时。
所以我很困惑这一点。有没有人遇到过与此相同的问题?
感谢
文森特
我刚刚开始在新项目上面对这个问题。抛出这个错误的中间件是:app.UseNinjectWebApi(config);当我评论说,一切都按预期工作。我仍在四处探索发生了什么事情。 – sgmeyer 2015-02-20 11:28:08
愚蠢的猜测,但是当你将你的绑定绑定到HttpConfiguration到TestHttpConfiguration时会发生什么? – sgmeyer 2015-02-20 11:29:55
嗨,谢谢你回复我,可惜我没有设法开始工作我的原始项目。在下面看到我的回答我从零开始并使用控制台安装软件包对它进行了分类。像你一样,它是导致错误的app.useNInjectWebApi,但不管我如何处理它,它都保持在这个http配置上失败。不知道这会帮助你,我希望它。让我知道。 – vm2013 2015-02-23 09:19:11