3

我有一个带有 Web.Api 项目和 MVC 3 项目的 VS2010 解决方案。

Web.APi 和 MVC 项目都有自己的 App_Start,其中包含 NinjectWebCommon,并在其中声明了自己的绑定。

尝试使用 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(IEnumerable 1 source) +371 Ninject.Web.Mvc.NinjectMvcHttpApplicationPlugin.Start() in c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectMvcHttpApplicationPlugin.cs:53 Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable1 series, Action 1 action) in c:\Projects\Ninject\ninject\src\Ninject\Infrastructure\Language\ExtensionsForIEnumerableOfT.cs:32 Ninject.Web.Common.Bootstrapper.Initialize(Func1 createKernelCallback) in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\Bootstrapper.cs: 53 XXXX.UI.App_Start.NinjectWebCommon.Start() 在 D:\Code\XXXX\PoS\XXXX.UI\App_Start\NinjectWebCommon.cs:32

如果我从 Api 或 MVC 站点中删除 WebActivator.PreApplicationStartMethod,我不会收到此错误。

我认为有两个 Start 有问题,但不知道该怎么办?我可以让它们共存吗?我应该分成 2 个解决方案并希望它消失吗?部署站点后,api 将驻留在不同的服务器上,站点将使用 api。

4

1 回答 1

1

回到基础。

遵循此处定义的步骤:http ://www.eyecatch.no/blog/2012/06/using-ninject-with-webapi-rc/

仍然有问题,但那是因为 MVC 客户端站点有对 ninject.webapi 的引用。删除了所有作品。

于 2013-01-04T08:44:02.717 回答