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

使用WCF Web API预览的Ninject 5

发布时间:2020-12-14 19:40:28 所属栏目:资源 来源:网络整理
导读:任何人可以指出我正确的方向让Ninject使用WCF Web API Preview 5?我已经成功地运行在我的ASP.NET MVC 3项目中,也在另一个内部WCF服务使用Ninject.Extensions.Wcf库.但是,当创建一个新的MVC 3项目并从NuGet获取WebApi.All库时,我无法使其工作. 我已经看过这
任何人可以指出我正确的方向让Ninject使用WCF Web API Preview 5?我已经成功地运行在我的ASP.NET MVC 3项目中,也在另一个内部WCF服务使用Ninject.Extensions.Wcf库.但是,当创建一个新的MVC 3项目并从NuGet获取WebApi.All库时,我无法使其工作.

我已经看过这个stackoverflow后Setting up Ninject with the new WCF Web API,但不能让它工作,我认为可以与最新版本的一些变化.

我也不确定哪个Ninject Libraries参考超过主要的.我使用Ninject.MVC3,Ninject.Extensions.Wcf.

对此的任何帮助将不胜感激.

****更新**

我正在使用的代码来自上述问题的答案.我有自己的类文件.

public class NinjectResourceFactory : IResourceFactory
    {
        private readonly IKernel _kernel;

        public NinjectResourceFactory(IKernel kernel)
        {
            _kernel = kernel;
        }

        public object GetInstance(Type serviceType,InstanceContext instanceContext,HttpRequestMessage request)
        {
            return _kernel.Get(serviceType);
        }

        public void ReleaseInstance(InstanceContext instanceContext,object service)
        {
            // no op
        }
    }

我在我的global.asax中有

var configuration = HttpConfiguration.Create().SetResourceFactory(new NinjectResourceFactory());
RouteTable.Routes.MapServiceRoute<myResource>("resource",configuration);

我遇到的问题是IResourceFactory接口不被识别,并且HttpConfiguration.Create()不再存在,所以我需要设置SetResourceFactory其他一些我试图使用HttpConfiguration().CreateInstance方法,但没有喜悦.

解决方法

以下是我的代码与Ninject和WebApi,它的工作原理.
创建一个类继承自WebApiConfiguration
public class NinjectWebApiConfiguration : WebApiConfiguration {
    private IKernel kernel = new StandardKernel();

    public NinjectWebApiConfiguration() {
        AddBindings();
        CreateInstance = (serviceType,context,request) => kernel.Get(serviceType);
    }

    private void AddBindings() {
        kernel.Bind<IProductRepository>().To<MockProductRepository>();
    }

}

并在RegisterRoutes中使用NinjectWebApiConfiguration

public static void RegisterRoutes(RouteCollection routes) {

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    var config = new NinjectWebApiConfiguration() { 
        EnableTestClient = true
    };

    routes.MapServiceRoute<ContactsApi>("api/contacts",config);
}

(编辑:李大同)

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

    推荐文章
      热点阅读