isn*_*ntn 3 c# wpf asp.net-mvc .net-4.0 code-access-security
我正在调用ModelMetadataProviders.Current.GetMetadataForProperties来使用Visual Studio 2010获取WPF应用程序中的ModelMetadata列表.此调用执行正常,我得到IEnumerable <>作为回报.在代码行,我尝试迭代这个,我得到System.MethodAccessException.
有趣的是,只有在我使用F5进行调试时才会发生这种情况.如果我用Ctrl + F5运行代码,那么我不会得到这个异常,代码工作正常.如果我从Windows资源管理器运行exe,它运行良好.
当然,我错过了一些东西.可能是,System.Web.Mvc无法从WPF应用程序中使用?(为什么)有关visual studio调试器的东西吗?
任何帮助将不胜感激.
这是完整的例外:
尝试通过安全透明方法'System.Web.Mvc.TypeDescriptorHelper.Get(System.Type)'来访问安全关键方法'System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider..ctor(System.Type)'失败.
程序集'System.ComponentModel.DataAnnotations,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'是有条件的APTCA程序集,在当前的AppDomain中未启用.为了使该组件由部分信任或安全性的透明的代码中使用,请在创建应用程序域时添加组件名称"System.ComponentModel.DataAnnotations,公钥= 0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9"到的PartialTrustVisibleAssemblies列表.
这是System.ComponentModel.DataAnnotations.dll中的一个已知错误,它将在下一版本的.NET Framework中修复.简而言之,DataAnnotations程序集被标记为有条件的APTCA,因为它最初仅供ASP.NET应用程序使用.程序集变得更加有用,因此它可以在ASP.NET之外使用,但我们忘记从程序集中删除条件APTCA标志.当在某些AppDomain中的ASP.NET应用程序之外访问此程序集时,这会导致透明DLL(如System.Web.Mvc.dll)失败,例如VS调试过程实例化的那些.
要回答您的其他问题:System.Web.Mvc.dll从未在ASP.NET应用程序之外进行过测试.它有几个挂钩到System.Web.dll和其他相关的程序集,因此它在某些时候会爆炸并不太令人惊讶.