在服务器上托管时的MEF异常

时间:2011-08-22 15:12:43

标签: c# wcf mef

我正在使用MEF来动态加载wcf服务。 MyInstanceProvider属于我的服务所在的同一物理库。代码适用于我的开发箱IIS7(64位),但在我的测试盒(32位)上抛出此异常。工作正常,直到我介绍MEF。

我很困惑为什么会这样?

public object GetInstance(InstanceContext context)
    {
        var lazyInstance = _container.GetExports(_serviceType, null, null).FirstOrDefault(); 

        if (lazyInstance == null) throw new InvalidOperationException();

        return lazyInstance.Value; 
    }

异常

System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.RuntimeModule.GetTypes()
   at System.Reflection.Assembly.GetTypes()
   at System.ComponentModel.Composition.Hosting.AssemblyCatalog.get_InnerCatalog()
   at System.ComponentModel.Composition.Hosting.AssemblyCatalog.GetExports(ImportDefinition definition)
   at System.ComponentModel.Composition.Hosting.DirectoryCatalog.<>c__DisplayClass1.<GetExports>b__0(ComposablePartCatalog catalog)
   at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()
   at System.ComponentModel.Composition.Hosting.CatalogExportProvider.GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
   at System.ComponentModel.Composition.Hosting.ExportProvider.TryGetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition, IEnumerable`1& exports)
   at System.ComponentModel.Composition.Hosting.ExportProvider.GetExports(ImportDefinition definition, AtomicComposition atomicComposition)
   at System.ComponentModel.Composition.Hosting.AggregateExportProvider.GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
   at System.ComponentModel.Composition.Hosting.ExportProvider.TryGetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition, IEnumerable`1& exports)
   at System.ComponentModel.Composition.Hosting.ExportProvider.TryGetExports(ImportDefinition definition, AtomicComposition atomicComposition, IEnumerable`1& exports)
   at System.ComponentModel.Composition.Hosting.CompositionContainer.GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
   at System.ComponentModel.Composition.Hosting.ExportProvider.TryGetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition, IEnumerable`1& exports)
   at System.ComponentModel.Composition.Hosting.ExportProvider.GetExports(ImportDefinition definition, AtomicComposition atomicComposition)
   at System.ComponentModel.Composition.Hosting.ExportProvider.GetExportsCore(Type type, Type metadataViewType, String contractName, ImportCardinality cardinality)
   at System.ComponentModel.Composition.Hosting.ExportProvider.GetExports(Type type, Type metadataViewType, String contractName)
   at MyInstanceProvider.GetInstance(InstanceContext context) in C:\CodeWorkspace\IDATT\Code\IDATT.Web.Services\MyInstanceProvider.cs:line 21
   at MyInstanceProvider.GetInstance(InstanceContext context, Message message) in C:\CodeWorkspace\IDATT\Code\IDATT.Web.Services\MyInstanceProvider.cs:line 30
   at System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance(InstanceContext instanceContext, Message request)
   at System.ServiceModel.InstanceContext.GetServiceInstance(Message message)
   at System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</

编辑:

关注此博客文章以获取详细信息: http://weblogs.asp.net/kencox/archive/2010/08/24/fed-up-with-system-data-metadata-edm-objectitemassemblyloader.aspx

这就是我所看到的:

  

无法加载文件或程序集   'System.ServiceModel.DomainServices.EntityFramework,Version = 4.0.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个   依赖。系统找不到指定的文件。

我知道这是RIA服务。我确实使用了那些但不是在这个地方,所以这很奇怪。但无论如何。为什么抱怨这个图书馆?我应该将它们作为参考添加并放入Bin文件夹吗?

EDIT2(溶液) 好的,在某个解决方案的某个地方,我正在使用RIA服务(甚至没有使用,只是添加了参考) 所以,不知何故,所有的MEF都需要那些RIA参考。而且,RIA Services不是.NET框架的一部分,所以我必须这样做:http://blogs.msdn.com/b/deepm/archive/2010/03/15/are-you-a-hoster-and-want-to-support-ria-services.aspx

现在一切正常

1 个答案:

答案 0 :(得分:0)

我会检查该机器上是否安装了WCF RIA服务,然后我会检查您是否正在使用System.ServiceModel.DomainServices.EntityFramework程序集中的任何类型(或依赖于任何类型)。

相关问题