2012-03-26 12 views
5

ローカルで実行すると効果的なMEFアプリケーションがありますが、ネットワーク共有上でリモートで呼び出された場合は機能しません。アプリケーションがネットワーク共有にある場合のMEF構成

私はUNCの問題を避けるためにAssembly.LoadFromを使用していますが、すべてのdllがexeの隣に位置しているのを見て、これは問題ではないと私は考えていませんでした。

また、msdnを見て、.NET 4のアクセス許可によく見られるConfigurationManager.GetSectionの問題を修正しました。

私は設定ファイルに<loadFromRemoteSources enabled="true"/>を許可しています。だから問題がどこにあるのか分かりません。

編集:例外のProductDispatcherはカタログ内にあります。パーツ。

容器およびカタログ設定コード:

var catalog = new AggregateCatalog(); 

var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

foreach (string file in Directory.GetFiles(dir, "XXX*.dll")) 
{ 
    var assembly = Assembly.LoadFrom(file); 
    catalog.Catalogs.Add(new AssemblyCatalog(assembly)); 
} 

var container = new CompositionContainer(catalog); 
var batch = new CompositionBatch(); 
batch.AddPart(this); 
container.Compose(batch); 

インポートである(私は作る公開しようとしている):

[ImportMany(typeof(IEntityTypeDispatcher))] 
private IEnumerable<IEntityTypeDispatcher> Dispatchers { get; set; } 

エクスポートの例である:

[Export(typeof(IEntityTypeDispatcher))] 
internal class ContactDispatcher : EntityTypeDispatcher<Contact> 

例外エラーは次のとおりです。

The composition produced a single composition error. The root cause is provided below. Review the CompositionException.Errors property for more detailed information. 

1) Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. 

Resulting in: An exception occurred while trying to create an instance of type 'XXX.XXX.Dispatch.ProductDispatcher'. 

Resulting in: Cannot activate part 'XXX.XXX.Dispatch.ProductDispatcher'. 
Element: XXX.XXX.Dispatch.ProductDispatcher --> XXX.XXX.Dispatch.ProductDispatcher --> AssemblyCatalog (Assembly="XXX.XXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null") 

Resulting in: Cannot get export 'XXX.XXX.Dispatch.ProductDispatcher (ContractName="XXX.XXX.Dispatch.IEntityTypeDispatcher")' from part 'XXX.XXX.Dispatch.ProductDispatcher'. 
Element: XXX.XXX.Dispatch.ProductDispatcher (ContractName="XXX.XXX.Dispatch.IEntityTypeDispatcher") --> XXX.XXX.Dispatch.ProductDispatcher --> AssemblyCatalog (Assembly="XXX.XXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null") 

Resulting in: Cannot set import 'XXX.XXX.Dispatch.DispatcherRepository.Dispatchers (ContractName="XXX.XXX.Dispatch.IEntityTypeDispatcher")' on part 'XXX.XXX.Dispatch.DispatcherRepository'. 
Element: XXX.XXX.Dispatch.DispatcherRepository.Dispatchers (ContractName="XXX.XXX.Dispatch.IEntityTypeDispatcher") --> XXX.XXX.Dispatch.DispatcherRepository 
(System.ComponentModel.Composition.CompositionException) 

    at System.ComponentModel.Composition.CompositionResult.ThrowOnErrors(AtomicComposition atomicComposition) 
    at System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.Compose(CompositionBatch batch) 
    at System.ComponentModel.Composition.Hosting.CompositionContainer.Compose(CompositionBatch batch) 
    at XXX.XXX.Dispatch.DispatcherRepository.LoadDispatchers() in D:\Workspaces\XXX\Branches\Dev1\XXX.XXX\XXX.XXX\Dispatch\DispatcherRepository.cs:line 71 
    at XXX.XXX.Dispatch.DispatcherRepository.get_Instance() in D:\Workspaces\XXX\Branches\Dev1\XXX.XXX\XXX.XXX\Dispatch\DispatcherRepository.cs:line 34 
    at XXX.XXX.Dispatch.DispatcherRepository.GetDispatchers() in D:\Workspaces\XXX\Branches\Dev1\XXX.XXX\XXX.XXX\Dispatch\DispatcherRepository.cs:line 21 
    at XXX.XXX.Dispatch.Dispatcher.get_Instance() in D:\Workspaces\XXX\Branches\Dev1\XXX.XXX\XXX.XXX\Dispatch\Dispatcher.cs:line 30 
    at XXX.XXX.Broker..ctor() in D:\Workspaces\XXX\Branches\Dev1\XXX.XXX\XXX.XXX\Broker.cs:line 52 

MEFは、部分的な信頼シナリオではうまく動作しないようです。すべてが完全に信頼できるようにするために必要なことはありますか?

+0

私は私のプロジェクトと同じ問題を抱えていたが、私はこの問題を解決することができ、残念ながらなかったです。 :( – eandersson

答えて

3

「リモートソースから読み込み」を有効にしているにもかかわらず、ファイルに制限がある可能性があるため、これが発生している可能性があります。

NTFSは、代替データストリーム(ADS)内のファイルにメタデータを適用する機能をサポートしています。これには、ゾーン情報(インターネットゾーンなど)が含まれます。

これは、ネットワーク上のファイルに問題が発生している可能性があります。インターネットゾーンで分類されている可能性があります。

は、この記事をチェックアウトして、これはあなたのためにそれを解決するかどうかを参照してください。http://mikehadlow.blogspot.co.uk/2011/07/detecting-and-changing-files-internet.html

関連する問題