使用WCF Web API预览的Ninject 5

前端之家收集整理的这篇文章主要介绍了使用WCF Web API预览的Ninject 5前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
任何人可以指出我正确的方向让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);
}
原文链接:https://www.f2er.com/html/223984.html

猜你在找的HTML相关文章