当前位置: 首页 > 编程语言 > C#

如何在ASP.NETMVCWebApp中使用Ninject?Share

时间:2023-04-11 00:32:13 C#

如何在ASP.NETMVCWebApp中使用Ninject?我创建了一个新的MVCweb应用程序,并且引用了Ninject.dll、Ninject.Web.Common.dll和Ninject.Web.MVC.dll。的Global.asax.cs:publicclassMvcApplication:NinjectHttpApplication{publicstaticvoidRegisterGlobalFilters(GlobalFilterCollectionfilters){filters.Add(newHandleErrorAttribute());}publicstaticvoidRegisterRoutes(RouteCollectionroutes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default",//路由名称"{controller}/{action}/{id}",//带参数的URLnew{controller="Home",action="Index",id=UrlParameter.Optional});}protectedoverrideIKernelCreateKernel(){varkernel=newStandardKernel();kernel.Load(Assembly.GetExecutingAssembly());返回内核;}protectedoverridevoidOnApplicationStarted(){base.OnApplicationStarted();AreaRegistration.RegisterAllAreas();RegisterGlobalFilters(GlobalFilters.Filters);RegisterRoutes(RouteTable.Routes);}}App_startNinjectWebCommon:publicstaticclassNinjectWebCommon{privatestaticreadonlyBootstrapperbootstrapper=newBootstrapper();//////启动应用程序///publicstaticvoidStart(){DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));bootstrapper.Initialize(CreateKernel);}//////停止应用程序。///publicstaticvoidStop(){bootstrapper.ShutDown();}//////创建将管理您的应用程序的内核。//////创建的内核。privatestaticIKernelCreateKernel(){varkernel=newStandardKernel();kernel.Bind().ToMethod(ctx=>()=>newBootstrapper().Kernel);kernel.Bind().To();注册服务(内核);返回内核;}//////在此处加载您的模块或注册您的服务!//////内核。privatestaticvoidRegisterServices(IKernelkernel){}}我收到错误“程序不包含任何元素”我研究竟做错了什么?检查堆栈跟踪以获取有关此错误及其在代码中的起源位置的更多信息。异常详细信息:System.InvalidOperationException:序列不包含任何元素源错误:在执行当前Web请求期间发生未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。StackTrace:[InvalidOperationException:Последовательностьнесодержитэлементов]System.Linq.Enumerable.Single(IEnumerable`1source)+320Ninject.Web.Mvc.NinjectMvcHttpApplicationPlugin.Start()inc:ProjectsNinjectninject.web.mvcmvc3srcNinject.Web.MvcNinjectMvcHttpApplicationPlugin.cs:53Ninject.Web.Common.Bootstrapper.b__0(INinjectHttpApplicationPluginc)在c:ProjectsNinjectNinject.Web.CommonsrcNinject.Web.CommonBootstrapper.cs:52Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable`1系列,Action`1动作)在c:ProjectsNinjectninjectsrcNinjectInfrastructureLanguageExtensionsForIEnumerableOfT.cs:32Ninject.Web.Common.Bootstrapper.Initialize(Func`1createKernelCallback)在c:ProjectsNinjectNinject.Web.CommonsrcNinjectWeb.CommonBootstrapper.cs:52Ninject.Web.Common.NinjectHttpApplication.Application_Start()inc:\ProjectsNinjectNinject.Web.CommonsrcNinject.Web.CommonNinjectHttpApplication.cs:80你是从NinjectHttpApplication派生的,NinjectHttpApplication你在同时使用App_Start!阅读Ninject.MVC3的文档以获取更多信息。为清楚起见,如果您使用NuGet添加“Ninject.Mvc3”包(我使用的是版本3.0.0.6),则无需对global.asax.cs进行任何修改。NuGet包通过在MVC4项目的App_Start文件夹中创建NinjectWebCommon类来为您施展魔法。我这样说是因为我似乎遵循了原始海报中的类似教程(我遵循了代码项目上的一篇名为“使用Ninject在asp.netmvc4和webapi中进行依赖注入”的文章),它与原始海报完全相同。代码项目文章没有明确说明您应该使用NuGet(并且不要触摸global.asax.cs或手动添加Ninject引用(并修改global.asax.cs)。确保您也没有参考使用NinjectMVC3App_Start。删除对此类的引用后,我的项目开始工作。另外,如前所述,检查命名空间是否匹配且正确。以上就是C#学习教程:HowtouseNinjectinASP.NETMVCWebApp?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: