当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《错误消息'无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.》经验,为你挑选了9个好方法。

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

它在本地工作得非常好,但是当我将项目部署到我们的测试环境时,我收到以下错误:

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

堆栈跟踪:在System.Reflection.Module._GetTypesInternal(StackCrawlMark和stackMark)

在System.Reflection.Assembly.GetTypes()

at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContext context)

在System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContext context)

at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache(Assembly assembly,Boolean loadReferencedAssemblies,Dictionary 2 knownAssemblies, Dictionary2&typesInLoading,List`1&errors)

at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection,Assembly assembly,Boolean loadReferencedAssemblies)

at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType(Type type)

at System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType(Type type,Assembly callingAssembly)

at System.Data.Objects.ObjectContext.CreateQuery [T](String queryString,ObjectParameter [] parameters)

实体框架似乎有问题,任何线索如何修复它?



1> Ben Gripka..:

这个错误没有真正的魔术子弹答案.关键是要掌握所有信息以了解问题.很可能动态加载的程序集缺少引用的程序集.该程序集需要位于应用程序的bin目录中.

使用此代码确定缺少的内容.

using System.IO;
using System.Reflection;
using System.Text;

try
{
    //The code that causes the error goes here.
}
catch (ReflectionTypeLoadException ex)
{
    StringBuilder sb = new StringBuilder();
    foreach (Exception exSub in ex.LoaderExceptions)
    {
        sb.AppendLine(exSub.Message);
        FileNotFoundException exFileNotFound = exSub as FileNotFoundException;
        if (exFileNotFound != null)
        {                
            if(!string.IsNullOrEmpty(exFileNotFound.FusionLog))
            {
                sb.AppendLine("Fusion Log:");
                sb.AppendLine(exFileNotFound.FusionLog);
            }
        }
        sb.AppendLine();
    }
    string errorMessage = sb.ToString();
    //Display or log the error based on your application.
}


谢谢!这应该是使用MEF的系统中任何日志记录设置的一部分.
只是为了快速找出缺少的东西,使用`throw new Exception(errorMessage);`,希望能帮助某人.
如果我每次回到这个答案都可以进行投票,那么它将会有大约5个赞成...并且还在计算中
你救了我的命.非常感谢.我从来没有发现过这个问题.这是我不再使用的一些旧dll,潜伏在我的项目结构中并引发了这个问题.

2> Mentoliptus..:

我通过将项目引用的Copy Local属性设置为true来解决了这个问题.


当我们继续向下钻取内部异常时,直到我们看到ReflectionTypeLoadException类型的异常并且它有一个属性"LoaderExceptions",它提供有关丢失或不匹配DLL信息的信息.然后我们可以从那里处理适当的行动.
好吧,从Visual Studio调试时没关系.但是,如果您的Web应用程序只在生产服务器上抛出此错误呢?甚至在将"复制本地"属性设置为true之后.
这是生产服务器上的问题的解决方案,而不是本地Visual Studio上的问题.复制本地在构建时复制引用的DLL,首先在与正在运行的应用程序相同的文件夹中搜索DLL.如果您没有将在构建时复制的DLL复制到生产服务器上的正确文件夹,则问题可能会持续存在.

3> Kenny Eliass..:

一个对我有用的解决方案是删除bin /和obj /文件夹并重建解决方案.


另一个建议:右键单击“解决方案资源管理器”中的“解决方案”节点,然后单击“清理解决方案”,然后单击“重建解决方案”。(如果您的源项目中有一个新添加项-解决方案中的其他项目-该部分将导致更改反映到您的项目dll文件夹中,从而解决了此问题)

4> William Edmo..:

两种可能的解决方

    您正在发布模式下编译,但从Debug目录中部署较旧的编译版本(反之亦然).

    您没有在测试环境中安装正确版本的.NET Framework.


如果其中一个DLL项目被设置为构建"x64"而不是"Any CPU",也会发现这种情况.

5> mkorman..:

正如之前提到的那样,通常情况下是不在那里的组件.

要准确了解您缺少的程序集,请附加调试器,设置断点,当您看到异常对象时,请深入查看"LoaderExceptions"属性.丢失的组件应该在那里.

希望能帮助到你!


在具有多个项目的解决方案中,我们如何查看哪个项目导致LoaderExceptions中的问题?我看到找不到System.Web.Mvc,但是我不知道此解决方案中的20个项目中哪一个会遇到麻烦。

6> Dev..:

解决方案是检查LoaderException:就我而言,某些DLL文件丢失了。



7> 小智..:

如果已部署到IIS,请确保在IIS上允许32位应用程序.您可以在当前应用程序池的设置上进行定义.



8> 小智..:

我在ASP.NET 4 + SQL Server 2008 R2 + Entity Framework 4应用程序中遇到此错误.

它可以在我的开发机器(Windows Vista 64位)上正常工作.然后,当部署到服务器(Windows Server 2008 R2 SP1)时,它将一直有效,直到会话超时.所以我们部署应用程序,一切看起来很好,然后让它超过20分钟的会话超时,然后抛出这个错误.

为了解决这个问题,我在Ken Cox的博客上使用了这个代码来检索LoaderExceptions属性.

对于我的情况,丢失的DLL是Microsoft.ReportViewer.ProcessingObjectModel(版本10).此DLL需要安装在运行应用程序的计算机的GAC中.您可以在Microsoft下载站点上提供的Microsoft Report Viewer 2010 Redistributable Package中找到它.



9> 小智..:

如果您在项目中使用EntityDataSource,则解决方案在Fix:'无法加载一个或多个请求类型的错误.您应该设置ContextTypeName ="ProjectNameNameSpace.EntityContainerName"'

这解决了我的问题......

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有