3

我正在使用 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,但我得到了同样的错误。

这里有什么帮助吗?

4

1 回答 1

0

根据我的经验,DI 容器在 Mono 中有点不稳定。如果您没有时间深入挖掘并修复可能是 Mono 错误,我会尝试不同的 DI 容器。

于 2012-12-14T09:57:10.180 回答