Legacy assembly throws“;请求主体权限失败”;
本文关键字:权限 失败 主体 请求 throws Legacy assembly | 更新日期: 2023-09-27 18:21:45
我正在针对一些使用System.EnterpriseServices并在.NET Framework 2.0中编译的遗留.NET程序集进行开发。在某些情况下,我收到"请求主体权限失败"异常,但在其他情况下没有。例如,时代码工作正常
- 我在.net 4.5.1中的xunit runner测试中运行了它
- 我把它作为IIS内部的Web服务运行。net 4.5.1
- 我在一个基于.net 2.0的windows窗体应用程序中运行它
但当我从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")]
我知道这个问题可能是由代码访问安全性的重大更改引起的,但我不知道具体是什么,所以我有两个问题:
- 此角色id映射到150000057050751的实际角色
- 为什么当代码从一个resharper xunit测试运行程序调用时,它没有触发异常??就像它在不同的安全上下文中运行一样
谢谢!
将其添加到App.config中解决了问题:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true" />
</configuration>
我猜Resharper Xuit runner在加载和执行程序集时使用了它,这就是它在测试中工作的原因。