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 されたコントローラーでは正常なデフォルト コンストラクターの欠落に関するエラー メッセージが表示されました)。

NinjectHttpApplication のサブクラス化も試みましたが、同じエラーが発生しました。

ここで何か助けはありますか?

4

1 に答える 1

0

私の経験では、モノでは DI コンテナーは不安定です。より深く掘り下げて、Mono のバグと思われるものを修正する時間がない場合は、別の DI コンテナーを試してみます。

于 2012-12-14T09:57:10.180 に答える