MONO 3.0.2+;Ninject+;MVC4:序列不包含匹配元素

MONO 3.0.2+;Ninject+;MVC4:序列不包含匹配元素,mono,asp.net-mvc-4,ninject,ninject.web.mvc,Mono,Asp.net Mvc 4,Ninject,Ninject.web.mvc,我正在使用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 matchi

我正在使用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 
System.invalidoOperationException
序列不包含匹配元素
位于System.Linq.Enumerable.Single[DataAnnotationsModelValidatorProvider](IEnumerable`1源,System.Func`2谓词,回退回退)[0x00000]中:0
位于System.Linq.Enumerable.Single[DataAnnotationsModelValidatorProvider](IEnumerable`1 source)[0x00000]中:0
在0中的Ninject.Web.Mvc.ninjectmvchttpplicationplugin.Start()[0x00000]处
在Ninject.Web.Common.Bootstrapper.b__0(InInjectHttpApplication插件c)[0x00000]中:0
在Ninject.Infrastructure.Language.ExtensionsForIEnumerableSoft.Map[InInjectHttpApplication插件](IEnumerable`1系列,System.Action`1 Action)[0x00000]中:0
在0中的Ninject.Web.Common.Bootstrapper.Initialize(System.Func`1 createKernelCallback)[0x00000]处
在0中的mvcapapplication1.App_Start.NinjectWebCommon.Start()[0x00000]处
在mvcapapplication1.mvcapapplication.Application_Start()[0x00000]中:0
为了澄清:我必须手动调用生成的NinjectWebCommon类的Start和Stop方法,因为
[assembly:WebActivator.PreApplicationStartMethod…]
属性被忽略(我首先得到了关于缺少默认构造函数的错误消息,这对于一个独立控制器来说是正常的)

我还尝试子类化NinjectHttpApplication,但我得到了相同的错误


有什么帮助吗?

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