using LinFx.Data; using LinFx.Index; using LinFx.Plugin.Caching; using LinFx.Plugin.Lucene.Services; using LinFx.Plugin.Search.Services; using LinFx.Security; using LinFx.Web; using YLSPay.Data; using YLSPay.Data.Service; [assembly: WebActivator.PreApplicationStartMethod(typeof(YLSPay.App_Start.NinjectWebCommon), "Start")] [assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(YLSPay.App_Start.NinjectWebCommon), "Stop")] namespace YLSPay.App_Start { using System; using System.Web; using Microsoft.Web.Infrastructure.DynamicModuleHelper; using Ninject; using Ninject.Web.Common; using System.Data.Entity; public static class NinjectWebCommon { static readonly Bootstrapper bootstrapper = new Bootstrapper(); /// <summary> /// Starts the application /// </summary> public static void Start() { DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); bootstrapper.Initialize(CreateKernel); } /// <summary> /// Stops the application. /// </summary> public static void Stop() { bootstrapper.ShutDown(); } /// <summary> /// Creates the kernel that will manage your application. /// </summary> /// <returns>The created kernel.</returns> private static IKernel CreateKernel() { var kernel = new StandardKernel(); kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel); kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>(); RegisterServices(kernel); return kernel; } /// <summary> /// Load your modules or register your services here! /// </summary> /// <param name="kernel">The kernel.</param> private static void RegisterServices(IKernel kernel) { var aa = new HttpContextWrapper(HttpContext.Current) as HttpContextBase; kernel.Bind<HttpContext>().ToMethod(ctx => HttpContext.Current).InRequestScope(); kernel.Bind<HttpContextBase>().ToMethod(ctx => new HttpContextWrapper(HttpContext.Current)).InRequestScope(); //kernel.Register(c => // //register FakeHttpContext when HttpContext is not available // HttpContext.Current != null ? // (new HttpContextWrapper(HttpContext.Current) as HttpContextBase) : // (new FakeHttpContext("~/") as HttpContextBase)) // .As<HttpContextBase>() // .InstancePerHttpRequest(); //var httpContext = new FakeHttpContext("~/") as HttpContextBase; kernel.Bind<HttpContextBase>().ToMethod(ctx => HttpContext.Current != null ? (new HttpContextWrapper(HttpContext.Current) as HttpContextBase) : (new LinFx.Web.Fakes.FakeHttpContext("~/") as HttpContextBase)); kernel.Bind<IDbContext>().To<YlsPayContext>().InRequestScope(); kernel.Bind<DbContext>().To<YlsPayContext>().InRequestScope(); kernel.Bind<ShopService>().ToSelf().InRequestScope(); kernel.Bind<ProductService>().ToSelf().InRequestScope(); kernel.Bind<OrderService>().ToSelf().InRequestScope(); kernel.Bind<CategoryService>().ToSelf().InRequestScope(); kernel.Bind<ICacheManager>().To<MemoryCacheManager>().InRequestScope(); kernel.Bind<IWorkContext>().To<WorkContext>().InSingletonScope(); kernel.Bind<IUserService>().To<UserService>().InRequestScope(); kernel.Bind<IProductService>().To<ProductService>().InRequestScope(); //kernel.Bind<IAddressService>().To<ProductService>().InRequestScope(); kernel.Bind(typeof(IRepository<>)).To(typeof(Repository<>)).InRequestScope(); ; //search kernel.Bind<IIndexManager>().To<DefaultIndexManager>(); kernel.Bind<ISearchService>().To<SearchService>(); kernel.Bind<IIndexProvider>().To<LuceneIndexProvider>(); kernel.Bind<ISearchBuilder>().To<LuceneSearchBuilder>(); } } }
引用
Ninject
Ninject.Web.Common
Ninject.Web.Mvc
不知道为什么,,我总不能成功.
这里出问题了吗?
kernel.Bind<HttpContext>().ToMethod(ctx => HttpContext.Current).InRequestScope();
kernel.Bind<HttpContextBase>().ToMethod(ctx => new HttpContextWrapper(HttpContext.Current)).InRequestScope();