我使用实体框架,SQL Server 2000, Visual Studio 2008和企业库开发了一个应用程序。

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

Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information Stack trace: at System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark) at System.Reflection.Assembly.GetTypes() at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContext context) at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContext context) at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache(Assembly assembly, Boolean loadReferencedAssemblies, Dictionary2 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)

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


当前回答

我在使用ASP时遇到了这个错误。NET 4 + SQL Server 2008 R2 +实体框架4应用程序。

它在我的开发机器(Windows Vista 64位)上工作得很好。然后,当部署到服务器(Windows server 2008 R2 SP1)时,它将一直工作到会话超时。因此,我们部署应用程序,一切看起来都很好,然后让它超过20分钟的会话超时,然后抛出这个错误。

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

对于我的情况,缺失的DLL是Microsoft.ReportViewer.ProcessingObjectModel(版本10)。这个DLL需要安装在运行应用程序的机器的GAC中。您可以在微软下载站点上的Microsoft Report Viewer 2010 Redistributable Package中找到它。

其他回答

我的问题已解决后,我删除多余的程序集文件从bin文件夹。

在配置管理器中验证每个项目是否正确设置。

类似于William Edmondson关于这个问题的原因,我将我的配置管理器设置从“调试”“任意CPU”切换到“调试”“。net”。问题是“。”NET的版本没有配置为构建所有的项目,所以我的一些dll是过时的(而另一些是最新的)。这导致启动应用程序时出现许多问题。

临时解决方案是执行Kenny Eliasson的建议,清除\bin和\obj目录。然而,一旦我对非编译项目做了更多的更改,一切都会再次失败。

这对我很管用。把它添加到你的web.config中

<system.web>
  <trust level="Full" />

另一个解决方案,知道为什么什么都不能工作(从微软连接):

将以下代码添加到项目中: foreach (AppDomain.CurrentDomain.GetAssemblies()中的var asm) { asm.GetTypes (); } 关闭生成序列化程序集。 构建并执行。

一个对我有效的解决方案是删除bin/和obj/文件夹并重新构建解决方案。

更新:

或者你可以尝试在“解决方案资源管理器”中右键单击“解决方案”节点,然后单击“清洁解决方案”,然后单击“重建解决方案”(感谢Emre Guldogan)