遗留程序集抛出 "Request for principal permission failed"

Legacy assembly throws "Request for principal permission failed"

我正在针对一些使用 System.EnterpriseServices 并在 .NET Framework 2.0 中编译的遗留 .NET 程序集进行开发。我在某些情况下收到 "Request for principal permission failed" 异常,但在其他情况下则没有。例如,代码在

时工作正常

但是当我从 Windows 表单应用程序 .net 4.5.1 运行 它时它抛出异常。在这种情况下,我得到了提到的异常和 FirstPermissionThatFailed。
<IPermission class="System.Security.Permissions.PrincipalPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1"><Identity Authenticated="true" Role="1,50000,50750,50751:Execute"/> </IPermission>

我对旧版进行了逆向工程 API,发现函数具有以下属性
[PrincipalPermission(SecurityAction.Demand,Role="1,50000,50750,50751:Execute")] 我知道问题可能是由对代码访问安全性所做的重大更改引起的,但我不知道具体是什么,所以我有 2 个问题:

  1. 这个角色 ID 映射到 1,50000,50750,50751
  2. 为什么代码在从 resharper xunit 测试调用时没有触发异常 运行ner?就像 运行ning 在不同的安全上下文中一样?

谢谢!

将此添加到 App.config 解决了问题:

<configuration> <startup useLegacyV2RuntimeActivationPolicy="true" /> </configuration>

我想 Resharper Xunit runner 在加载和执行程序集时会使用它,这就是它在测试中起作用的原因。