SYSLIB0002: PrincipalPermissionAttribute устарел
Начиная с версии .NET 5, конструктор PrincipalPermissionAttribute является устаревшим и вызывает ошибку времени компиляции SYSLIB0002
. Нельзя создать экземпляр этого атрибута или применить его к методу.
В отличие от других устаревших предупреждений, эту ошибку нельзя обойти.
Методы обхода проблемы
При применении атрибута к методу действия MVC ASP.NET:
Рассмотрите возможность использования встроенной инфраструктуры авторизации ASP.NET. В следующем примере кода показано, как добавить к контроллеру атрибут AuthorizeAttribute. Среда выполнения ASP.NET выполнит авторизацию пользователя перед выполнением действия.
using Microsoft.AspNetCore.Authorization; namespace MySampleApp { [Authorize(Roles = "Administrator")] public class AdministrationController : Controller { public ActionResult MyAction() { // This code won't run unless the current user // is in the 'Administrator' role. } } }
Дополнительные сведения см. в статьях Авторизация на основе ролей в ASP.NET Core и Общие сведения об авторизации в ASP.NET Core.
При применении атрибута к коду библиотеки вне контекста веб-приложения:
Выполните проверки вручную в начале метода, вызвав метод IPrincipal.IsInRole(String).
using System.Threading; void DoSomething() { if (Thread.CurrentPrincipal == null || !Thread.CurrentPrincipal.IsInRole("Administrators")) { throw new Exception("User is anonymous or isn't an admin."); } // Code that should run only when user is an administrator. }