PermissionSet - 程序集的安全限制设置在哪里?

时间:2011-03-02 07:03:33

标签: .net security .net-4.0

我继承了一个解决方案,其中包含一个带有以下方法的方法的类库:

[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(现在运行)。我知道安全模型最近发生了重大变化版本)。

1 个答案:

答案 0 :(得分:0)

确定找到了答案。安全限制在加载程序集的AppDomain上。我最初认为程序集是静态调用的,但事实证明它在运行时被加载到一个新的AppDomain中。