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

时间:2010-09-28 14:23:59

标签: c# .net entity-framework exception-handling entitydatasource

我遇到的问题只显示EntityDataSource是否出现在ASP.NET(* .aspx)页面上。有趣的是,当我刷新页面( F5 )或再次查看它并且它让我发疯时,它似乎是Entity Framework的一个错误,因为我尝试了另一个项目,我得到同样的错误。

  

无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。   描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。   异常详细信息:System.Reflection.ReflectionTypeLoadException:无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。

堆栈追踪:

[ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.]
   System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) +0
   System.Reflection.RuntimeModule.GetTypes() +4
   System.Reflection.Assembly.GetTypes() +78
   System.Data.Metadata.Edm.ObjectItemConventionAssemblyLoader.LoadTypesFromAssembly() +32
   System.Data.Metadata.Edm.ObjectItemAssemblyLoader.Load() +25
   System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(Assembly assembly, Boolean loadReferencedAssemblies, ObjectItemLoadingSessionData loadingData) +160
   System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(Assembly assembly, Boolean loadReferencedAssemblies, KnownAssembliesSet knownAssemblies, EdmItemCollection edmItemCollection, Action`1 logLoadMessage, Object& loaderCookie, Dictionary`2& typesInLoading, List`1& errors) +166
   System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection, Assembly assembly, Boolean loadReferencedAssemblies, EdmItemCollection edmItemCollection, Action`1 logLoadMessage) +316
   System.Data.Metadata.Edm.ObjectItemCollection.ExplicitLoadFromAssembly(Assembly assembly, EdmItemCollection edmItemCollection, Action`1 logLoadMessage) +53
   System.Data.Metadata.Edm.MetadataWorkspace.ExplicitLoadFromAssembly(Assembly assembly, ObjectItemCollection collection, Action`1 logLoadMessage) +93
   System.Data.Metadata.Edm.MetadataWorkspace.LoadFromAssembly(Assembly assembly, Action`1 logLoadMessage) +130
   System.Web.UI.WebControls.EntityDataSourceView.ConstructContext() +585
   System.Web.UI.WebControls.EntityDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +76
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +21
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +143
   System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +74
   System.Web.UI.WebControls.GridView.DataBind() +4
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +66
   System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +75
   System.Web.UI.Control.EnsureChildControls() +102
   System.Web.UI.Control.PreRenderRecursiveInternal() +42
   System.Web.UI.Control.PreRenderRecursiveInternal() +175
   System.Web.UI.Control.PreRenderRecursiveInternal() +175
   System.Web.UI.Control.PreRenderRecursiveInternal() +175
   System.Web.UI.Control.PreRenderRecursiveInternal() +175
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2496

如何解决此问题?

4 个答案:

答案 0 :(得分:6)

这是.NET 4.0中的一个错误,应该在.NET 4.5中修复。一种可能的解决方案是在引用上将“Copy local”设置为true并删除不需要的引用。

更多信息位于 Unable to load one or more of the requested types. Connected with EntityDataSource

答案 1 :(得分:3)

请参阅问题 Random 'Unable to load one or more of the requested types' Errors (588847):

  

EntityDataSource将尝试从所有引用的程序集加载所有类型,以便发现实体数据模型的所有实体类型。

使用其他答案的技巧确保所有DLL文件都设置为“复制本地”可能会有所帮助。否则,请尝试解决方法:将ContextTypeName的{​​{1}}属性设置为实体容器类型的完全限定名称。

解决方法就是为我解决了这个问题。

答案 2 :(得分:2)

我遇到了同样的问题,发现它发生是因为生产环境缺少正确的DLL。您可以将项目引用的“复制本地”属性设置为“真”。

有关详细信息,请参阅 Error message 'Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.'

答案 3 :(得分:0)

我今天遇到了同样的问题,但仅限于生产服务器,而不是开发或测试(图)。我还在调查发生了什么,但我将生产服务器.NET Trust Level更改为,问题就消失了......这显然是一个临时修复,但它总比没有好。我希望这会有所帮助。