我正在使用 VS2012 RC 并在 .NET 4.0 模式下创建了一个 MVC4 应用程序。我使用 Ninject + Ninject.MVC3 作为 DI 容器。它适用于我在 Windows 上的开发机器和另一台安装了 .NET 4.0 的机器,但是当我将它部署在具有 Mono 3.0.2、XSP 和 fastcgi + lighttpd 的 Linux 服务器上时,我只收到一条与 Ninject 相关的错误消息:
System.InvalidOperationException
Sequence contains no matching element
at System.Linq.Enumerable.Single[DataAnnotationsModelValidatorProvider] (IEnumerable`1 source, System.Func`2 predicate, Fallback fallback) [0x00000] in <filename unknown>:0
at System.Linq.Enumerable.Single[DataAnnotationsModelValidatorProvider] (IEnumerable`1 source) [0x00000] in <filename unknown>:0
at Ninject.Web.Mvc.NinjectMvcHttpApplicationPlugin.Start () [0x00000] in <filename unknown>:0
at Ninject.Web.Common.Bootstrapper.<Initialize>b__0 (INinjectHttpApplicationPlugin c) [0x00000] in <filename unknown>:0
at Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map[INinjectHttpApplicationPlugin] (IEnumerable`1 series, System.Action`1 action) [0x00000] in <filename unknown>:0
at Ninject.Web.Common.Bootstrapper.Initialize (System.Func`1 createKernelCallback) [0x00000] in <filename unknown>:0
at MvcApplication1.App_Start.NinjectWebCommon.Start () [0x00000] in <filename unknown>:0
at MvcApplication1.MvcApplication.Application_Start () [0x00000] in <filename unknown>:0
澄清一下:我必须手动调用生成的 NinjectWebCommon 类的 Start 和 Stop 方法,因为该[assembly: WebActivator.PreApplicationStartMethod...]
属性被忽略(我首先收到有关缺少默认构造函数的错误消息,这对于 DI ed 控制器是正常的)
我也尝试子类化 NinjectHttpApplication,但我得到了同样的错误。
这里有什么帮助吗?