错误消息“无法加载一种或多种请求的类型。 检索LoaderExceptions属性以获取更多信息。

断了今生、忘了曾经 提交于 2020-03-12 19:50:03

我已经使用Entity Framework ,SQL Server 2000,Visual Studio 2008和Enterprise Library开发了一个应用程序。

它在本地绝对可以正常工作,但是当我将项目部署到测试环境时,出现以下错误:

无法加载一种或多种请求的类型。 检索LoaderExceptions属性以获取更多信息

堆栈跟踪:位于System.Reflection.Module._GetTypesInternal(StackCrawlMark&stackMark)

在System.Reflection.Assembly.GetTypes()

在System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContext上下文)

在System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContext上下文)处

在System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache(组装程序集,布尔值loadReferencedAssemblies,字典2 knownAssemblies, Dictionary 2&typesInLoading,列表1&错误)

在System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection,程序集程序集,布尔loadReferencedAssemblies)

在System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType(类型类型)

在System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType(类型类型,程序集callingAssembly)

在System.Data.Objects.ObjectContext.CreateQuery [T](字符串queryString,ObjectParameter []参数)处

实体框架似乎有问题,有什么线索如何解决?


#1楼

两种可能的解决方案:

  1. 您正在发布模式下进行编译,但是从Debug目录中部署了较旧的编译版本(反之亦然)。
  2. 您没有在测试环境中安装正确版本的.NET Framework。

#2楼

为此添加我的特定问题/解决方案,因为这是此错误消息的第一个结果。 就我而言,当我在IIS中第一个应用程序的文件夹中部署了第二个应用程序时收到了错误。 两者都用相同的名称定义连接字符串,导致子应用程序发生冲突,并进而生成此(对我而言)非显而易见的错误消息。 通过添加以下内容解决了该问题:

<clear/>

在子Web应用程序的连接字符串块中,阻止了子Web应用程序继承层次结构中更高级别的web.config文件的连接字符串,因此它看起来像:

<connectionStrings>
  <clear/>
  <add name="DbContext" connectionString="MySERVER" providerName="System.Data.SqlClient" />
</connectionStrings>

当我确定发生了什么时,参考堆栈溢出问题很有帮助, 子应用程序是否将从其父web.config继承?


#3楼

在配置文件中将32位IIS模式设置为true,将调试模式设置为true,删除temp目录并重新设置IIS可以暂时解决此问题,并且在一段时间后会再次出现。


#4楼

如前所述,通常是不存在装配的情况。

要确切知道缺少的程序集,请附加调试器,设置一个断点,然后在看到异常对象时,深入到“ LoaderExceptions”属性。 缺少的程序集应该在那里。

希望能帮助到你!


#5楼

验证是否在Configuration Manager中正确设置了每个项目。

William Edmondson导致此问题原因类似,我将Configuration Manager设置从“调试”“任何CPU”切换为“调试”“ .NET”。 问题是“ .NET”版本未配置为构建所有项目,因此我的某些DLL已过期(而其他DLL是最新的)。 这在启动应用程序时引起了许多问题。

临时的解决方法是按照肯尼·埃里亚森的建议清除\\ bin和\\ obj目录。 但是,一旦我对非编译项目进行了更多更改,一切都会再次失败。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!