我有一个 VS2010 解决方案,其中包含一个 Web.Api 项目和一个 MVC 3 项目。
Web.APi 和 MVC 项目都有自己的 App_Start,其中包含 NinjectWebCommon 以及其中声明的自己的绑定(bind)。
当尝试使用 Api 时,我总是收到以下消息:
序列不包含元素
描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息:System.InvalidOperationException:序列不包含元素
来源错误:
第 30 行:DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); 第 31 行:DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); 第 32 行:bootstrapper.Initialize(CreateKernel); 第 33 行:} 第 34 行:
源文件:D:\Code\GreenDeal\PoS\GreenDeal.UI\App_Start\NinjectWebCommon.cs 行:32
堆栈跟踪:
[InvalidOperationException:序列不包含元素]
System.Linq.Enumerable.Single(IEnumerable1 源)+371
C:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectMvcHttpApplicationPlugin.cs 中的 Ninject.Web.Mvc.NinjectMvcHttpApplicationPlugin.Start():53
C:\Projects\Ninject\ninject\src\Ninject\Infrastruct\Language\ExtensionsForIEnumerableOfT.cs:32 中的 Ninject.Infrastruct.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable
1 系列,Action1 操作)
C:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\Bootstrapper.cs:53 中的 Ninject.Web.Common.Bootstrapper.Initialize(Func
1 createKernelCallback)
D:\Code\XXXX\PoS\XXXX.UI\App_Start\NinjectWebCommon.cs:32 中的 XXXX.UI.App_Start.NinjectWebCommon.Start()
如果我从 Api 或 MVC 站点删除 WebActivator.PreApplicationStartMethod,则不会收到此错误。
我认为拥有两个 Start 存在问题,但不知道该怎么办?我可以让它们共存吗?我应该分成两个解决方案并希望它消失吗?部署后,站点和 api 将驻留在不同的服务器上,站点将使用 api。
最佳答案
回到基础。
按照此处定义的步骤进行操作:http://www.eyecatch.no/blog/2012/06/using-ninject-with-webapi-rc/
仍然存在问题,但那是因为 MVC、客户端站点引用了 ninject.webapi。删除了该内容和所有作品。
关于asp.net-mvc-3 - 用于网站和 Api 的 Ninject - 序列不包含元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14138503/