遗留程序集抛出 "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" 异常,但在其他情况下则没有。例如,代码在
时工作正常
- 我 运行 它来自 xunit 运行ner 测试 in.net 4.5.1
- 我运行将它作为 IIS 中的 Web 服务也放入 .net 4.5.1
- 我 运行 它来自 windows 针对 .net 2.0 构建的表单应用程序
但是当我从 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 个问题:
- 这个角色 ID 映射到 1,50000,50750,50751
- 为什么代码在从 resharper xunit 测试调用时没有触发异常 运行ner?就像 运行ning 在不同的安全上下文中一样?
谢谢!
将此添加到 App.config 解决了问题:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true" />
</configuration>
我想 Resharper Xunit runner 在加载和执行程序集时会使用它,这就是它在测试中起作用的原因。
我正在针对一些使用 System.EnterpriseServices 并在 .NET Framework 2.0 中编译的遗留 .NET 程序集进行开发。我在某些情况下收到 "Request for principal permission failed" 异常,但在其他情况下则没有。例如,代码在
时工作正常- 我 运行 它来自 xunit 运行ner 测试 in.net 4.5.1
- 我运行将它作为 IIS 中的 Web 服务也放入 .net 4.5.1
- 我 运行 它来自 windows 针对 .net 2.0 构建的表单应用程序
但是当我从 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 个问题:
- 这个角色 ID 映射到 1,50000,50750,50751
- 为什么代码在从 resharper xunit 测试调用时没有触发异常 运行ner?就像 运行ning 在不同的安全上下文中一样?
谢谢!
将此添加到 App.config 解决了问题:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true" />
</configuration>
我想 Resharper Xunit runner 在加载和执行程序集时会使用它,这就是它在测试中起作用的原因。