CA2135 и CA2122 битва - PullRequest
       3

CA2135 и CA2122 битва

3 голосов
/ 21 октября 2011

У меня есть класс, который попадает в 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 Ответ

2 голосов
/ 25 октября 2011

Я сильно подозреваю, что правило CA2122 не было полностью обновлено для работы с прозрачностью 2 уровня. Хотя он распознает атрибут уровня сборки SecurityCritical, он игнорирует атрибут уровня типа SecurityCritical или уровня элемента в сборке APTCA. Вероятно, безопасно добавить атрибут SecurityCritical и подавить нарушение CA2122, но вы также можете проверить, что код, в котором отсутствует неограниченная DirectoryServicesPermission, не может фактически вызываться в вашем методе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...