The*_*ght 324 c# entity-framework
我使用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, 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)
实体框架似乎有问题,任何线索如何修复它?
Ben*_*pka 509
这个错误没有真正的魔术子弹答案.关键是要掌握所有信息以了解问题.很可能动态加载的程序集缺少引用的程序集.该程序集需要位于应用程序的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.
}
Run Code Online (Sandbox Code Playgroud)
Men*_*tus 102
我通过将项目引用的Copy Local属性设置为true来解决了这个问题.
Ken*_*son 56
一个对我有用的解决方案是删除bin /和obj /文件夹并重建解决方案.
Wil*_*son 32
两种可能的解决方
mko*_*man 13
正如之前提到的那样,通常情况下是不在那里的组件.
要准确了解您缺少的程序集,请附加调试器,设置断点,当您看到异常对象时,请深入查看"LoaderExceptions"属性.丢失的组件应该在那里.
希望能帮助到你!
小智 6
我在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中找到它.
小智 5
最初我尝试了 Fusion 日志查看器,但这并没有帮助,所以我最终将 WinDbg 与 SOS 扩展一起使用。
!dumpheap -stat -type 异常 /D
然后我检查了 FileNotFoundExceptions。异常中的消息包含未加载的 DLL 的名称。
注意,/D 为您提供超链接结果,因此单击 FileNotFoundException 摘要中的链接。这将显示一个例外列表。然后单击例外之一的链接。那将 !dumpobject 例外。然后,您应该能够单击异常对象中的 Message 链接,您将看到文本。
小智 5
如果您在项目中使用EntityDataSource,则解决方案在Fix:'无法加载一个或多个请求类型的错误.您应该设置ContextTypeName ="ProjectNameNameSpace.EntityContainerName"'
这解决了我的问题......
归档时间: |
|
查看次数: |
340816 次 |
最近记录: |