2012-12-13 20 views
3

我使用VS2012 RC开创了.NET 4.0模式MVC4应用。我使用Ninject + Ninject.MVC3作为DI容器。它的工作原理我的开发机器上的Windows,并与.NET 4.0安装另一台机器上,但是当我部署Linux服务器使用Mono 3.0.2,XSP和FastCGI的lighttpd +上我刚刚得到一个Ninject相关的错误信息:MONO 3.0.2 + Ninject + MVC4:序列中没有匹配的元素

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

这里有什么帮助吗?

回答

0

DI容器是一种在单片状的在我的经验。如果你没有时间深入挖掘并修复看起来可能是单声道的问题,我会尝试一个不同的DI容器。