System.MethodAccessException、CAS 和 Visual Studio 调试器

2024-02-26

我正在使用 Visual Studio 2010 调用 ModelMetadataProviders.Current.GetMetadataForProperties 来获取 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, 版本=4.0.0.0,文化=中立, PublicKeyToken=31bf3856ad364e35' 是 有条件的 APTCA 组装是 未在当前 AppDomain 中启用。 为了使该程序集能够被使用 部分信任或安全透明 代码,请添加程序集名称 'System.ComponentModel.DataAnnotations, 公钥=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C49 2651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C 8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9' 到 PartialTrustVisibleAssemblies 列表 创建AppDomain时。


这是 System.ComponentModel.DataAnnotations.dll 中的一个已知错误,将在 .NET Framework 的下一版本中修复。简而言之,DataAnnotations 程序集被标记为有条件 APTCA,因为它最初仅供 ASP.NET 应用程序使用。该程序集变得更加有用,因此可以在 ASP.NET 外部使用它,但我们忘记从程序集中删除条件 APTCA 标志。这会导致透明 DLL(如 System.Web.Mvc.dll)在某些 AppDomain 中的 ASP.NET 应用程序外部访问此程序集(例如由 VS 调试进程实例化的程序集)时失败。

回答您的其他问题:System.Web.Mvc.dll 从未测试过在 ASP.NET 应用程序之外使用。它有几个与 System.Web.dll 和其他相关程序集挂钩的钩子,因此它在某个时候崩溃也就不足为奇了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.MethodAccessException、CAS 和 Visual Studio 调试器 的相关文章

随机推荐