2012-01-26 16 views
0

サイトの初期展開は正常です。約2〜3時間後、依存関係が解決できない(または少なくともエラーメッセージが私に伝えている)ので、コントローラは突然インスタンス化できません。散発的な "インターフェイスであり、構築できません。タイプマッピングがありません"

私はいろいろ試しましたが、どれもそれを解決していないようです。誰も私がチェックできるものはありますか?

+0

ええと、それはコンテナのライフタイムマネージャと何か関係があるのだろうか、おそらくそれは処分されているのかもしれない。 – Alfred

+0

それは、常にそれはそれが建設することができないと文句を言って同じインターフェイスですか?私はUnityが突然以前に持っていたインタフェース実装を解決する能力を失うことを見ることができません。これはエラーメッセージが示すものです。 –

+0

はい、同じインタフェース – Alfred

答えて

0

何が起こっているのかまだ分かりませんが、私はそれを修正することができました。私はサードパーティのブートストラップライブラリを使ってコンポーネントとマッピングを登録していました。しかし、MEFで自分自身を圧倒し、登録を自分でコントロールした後、問題はなくなった。私はそれが持ってはいけないときに物事を処分することによって何かをファンキーにしていたと推測しています。助けてくれてありがとう。

誰かが次の宣言とhttp://bootstrapper.codeplex.com/使用してこの問題に遭遇した場合:

IUnityContainer container = new UnityContainer(); 
    MEFContainer mefContainer = new MEFContainer(); 
    mefContainer.UnityRegistry.ForEach(x => x.Register(container)); 
    container.RegisterInstance<IMappingEngine>(Mapper.Engine); 
    mefContainer.AutoMapperRegistry.ForEach(x => x.CreateMap(Mapper.Configuration)); 

private class MEFContainer 
    { 
     [ImportMany(typeof(IUnityRegistration))] 
     public List<IUnityRegistration> UnityRegistry { get; set; } 

     [ImportMany(typeof(IMapCreator))] 
     public List<IMapCreator> AutoMapperRegistry { get; set; } 

     public MEFContainer() 
     { 
      var catalog = new DirectoryCatalog("bin"); 
      var compositionContainer = new CompositionContainer(catalog); 
      compositionContainer.ComposeParts(this); 
     } 
    } 

注意IUnityRegistration.Register(つまり:私がいることを置き換え

Bootstrap.Bootstrapper 
     .With.Unity() 
     .And.AutoMapper() 
     .And.ServiceLocator() 
     .Start(); 

を)とIMapCreator.CreateMap()は第3引数で定義されていますコード。 MEFはSystem.ComponentModel.Compositionを参照します。 およびSystem.ComponentModel.Composition.Hosting。最終的にはリファクタリングするだろう。

0

最近では、インターセプタの1つと同様の状況がありました。突然それはもはや機能しません。アセンブリX.Y.Zで定義されたインタフェースへのすべての呼び出しをインターセプトします。 dll。しかし、OSはファイルX.Y.Zを呼び出すことにしました。しばらくしてからDLLその間に新たな配備は行われませんでした。しかし突然名前の一致がすべて失敗しました。構成内のアセンブリを名前でロードしていますか?たぶん、文字列の比較でIgnoreCaseをチェックする必要があります。

もう1つのアイデア:オブジェクトにはある種のキャッシュを使用していますか?またはキャッシュベースのLifetimeManager?キャッシュアイテムがしばらくして無効になると、それらのオブジェクトが失われます。

関連する問題