實體框架LoaderExceptions無法加載一個或多個請求的類型

entity-framework

我有一個使用實體框架的Web服務。釋放到測試環境時,我收到以下錯誤:

“無法加載一個或多個請求的類型。” - 下面的堆棧跟踪......

測試盒安裝了.NET 3.5 SP 1,我在這裡閱讀了上一篇文章:

錯誤消息'無法加載一個或多個請求的類型。檢索LoaderExceptions屬性以獲取更多信息。

然而,在我的情況下,答案並沒有解決它。我已經將我的開發機器上的工作副本複制並粘貼到測試盒上,以確保調試DLL沒有問題(如答案所示),但沒有運氣。

這是一個已知的問題?我花了一整個上午試圖調試這個!!如果有人知道解決方案,請告訴我!

Retrieve the LoaderExceptions property for more information.   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, Dictionary`2 knownAssemblies, Dictionary`2& 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)
   at Company.Domain.ICommuicationsEntities.CreateQuery[T](String queryString, ObjectParameter[] parameters)
   at Comany.EntityFrameworkRepository`1.GetQuery()
   at Comany.Repositories.EntityFrameworkRepository`1.GetFiltered(Expression`1 filter, IncludeBuilder`1 includeBuilder)
   at Comany.Repositories.EntityFrameworkRepository`1.GetFiltered(Expression`1 filter)

一般承認的答案

正如堆棧的頂線所示:

檢索LoaderExceptions屬性以獲取更多信息。

您可以通過檢查調試器中的異常來找到它。


熱門答案

堆棧跟踪“檢索LoaderExceptions屬性以獲取更多信息”的第一行絕對是關鍵。您需要捕獲ReflectionTypeLoadException或轉換您的常規異常。

catch (System.Reflection.ReflectionTypeLoadException ex) {
    ex.LoaderExceptions;
} catch (Exception ex) {
    if (ex is System.Reflection.ReflectionTypeLoadException)
        ((System.Reflection.ReflectionTypeLoadException)ex).LoaderExceptions;
}

然後,您可以檢查LoaderExceptions屬性以找出可能缺少的DLL引用。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因