Cra*_*gly 9 ninject wcf-web-api
任何人都可以指出我正确的方向让Ninject使用WCF Web API Preview 5吗?我已成功启动并运行在我的ASP.NET MVC 3项目中以及使用Ninject.Extensions.Wcf库的另一个内部WCF服务中.但是,在创建新的MVC 3项目并从NuGet获取WebApi.All库时,我无法使其工作.
我已经看过这个stackoverflow post 使用新的WCF Web API设置Ninject但是无法让它工作,我认为可能与最新版本中的一些更改有关.
我也不确定哪个Ninject图书馆可以参考主要图书馆.我是否使用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
}
}
Run Code Online (Sandbox Code Playgroud)
我在global.asax中有这个:
var configuration = HttpConfiguration.Create().SetResourceFactory(new NinjectResourceFactory());
RouteTable.Routes.MapServiceRoute<myResource>("resource", configuration);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是IResourceFactory接口无法识别,并且HttpConfiguration.Create()不再存在,所以我需要设置SetResourceFactory,我尝试使用HttpConfiguration()创建其他方法.CreateInstance方法但没有喜悦.
小智 9
以下是我使用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>();
}
}
Run Code Online (Sandbox Code Playgroud)
并在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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |