CA2135和CA2122之战

时间:2011-10-21 19:52:33

标签: asp.net-mvc-3 c#-4.0 fxcop

我有一个命中Active Directory的类。它会在域中查找用户并检查其分组。这是我的函数定义:

[DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
public bool IsUserMemberOfGroup(String userName, String groupName)

我收到错误CA2135。所以我将其更改为使用安全关键,因为它在MSDN页面中声明:

[SecurityCritical]
public bool IsUserMemberOfGroup(String userName, String groupName)

现在,我收到错误CA2122,要求我将其更改回使用LinkDemand。如果没有压制这个错误,我能做些什么吗?

1 个答案:

答案 0 :(得分:2)

我强烈怀疑CA2122规则尚未完全更新以使用2级透明度。虽然它识别SecurityCritical程序集级属性,但它忽略APTCA程序集中的SecurityCritical类型或成员级属性。添加SecurityCritical属性并抑制CA2122违规可能是安全的,但您可能还需要验证缺少无限制DirectoryServicesPermission的代码无法实际调用您的方法。