我继承了一个解决方案,其中包含一个带有以下方法的方法的类库:
[PermissionSet(SecurityAction.Assert, Name = "FullTrust")]
显然需要该属性,因为如果我注释掉该属性,那么该方法将抛出以下异常:
System.Security.SecurityException: 请求类型的许可 “System.Security.Permissions.FileIOPermission, mscorlib,版本= 4.0.0.0, 文化=中性, 公钥= b77a5c561934e089' 失败。
据我所知,引用此程序集的可执行文件正在完全信任,因为当我查看可执行文件的app.manifest时,我可以看到:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
当我以管理员身份运行Visual Studio时,我会认为执行调试也会在管理员模式下运行可执行文件,因此它应该具有完全权限(尽管我可能完全误解了这一点)。
图书馆的AssemblyInfo似乎没有任何关于安全限制的有趣内容。
所以我不明白为什么这个库以较低的信任级别运行才开始。有人能告诉我所有可能的地方,我应该看看这个限制性安全政策的设定位置了吗?
(可能值得注意的是,这个项目是在.net 3.5下设计的,但我的工作是将其升级到4.0(现在运行)。我知道安全模型最近发生了重大变化版本)。
答案 0 :(得分:0)
确定找到了答案。安全限制在加载程序集的AppDomain上。我最初认为程序集是静态调用的,但事实证明它在运行时被加载到一个新的AppDomain中。