加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

rest – Web Api 2 OWIN 3 NInject.Web.WebApi.OwinHost,仅在启

发布时间:2020-12-25 07:57:27 所属栏目:资源 来源:网络整理
导读:我正在为我的DI构建一个带有Web API2,Owin 3和NInject Owinhost的rest API. 使用NInject提供的示例,我通过它创建一个“HttpConfiguration”对象并在startup.cs中调用NInject扩展方法,我收到一个错误: Error activating HttpConfiguration More than one m

我正在为我的DI构建一个带有Web API2,Owin 3和NInject Owinhost的rest API.

使用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.

我的代码如下Startup.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;
    }

奇怪的是当我在浏览器中刷新页面时,错误发生了,这让我相信这只会在应用程序启动时发生.

所以我对此感到困惑.有人遇到过同样的问题吗?

谢谢

文森特

解决方法

我有同样的错误,因为我安装了Ninject.Web.WebApi.WebHost和Ninject.Web.WebApi.OwinHost.

如果您查看源代码为OwinWebApiModule.cs和WebApiWebHostModule.cs,则两个Ninject模块都具有HttpConfiguration的绑定.

我删除了一个我不需要的东西,并且工作正常.

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读