SYSLIB0002: PrincipalPermissionAttribute は旧型式
PrincipalPermissionAttribute コンストラクターは古い形式であり、.NET 5 以降では、コンパイル時エラー SYSLIB0002
が発生します。 この属性をインスタンス化したり、メソッドに適用したりすることはできません。
他の非推奨警告とは異なり、エラーを非表示にすることはできません。
回避策
ASP.NET MVC アクション メソッドにこの属性を適用する場合:
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 での承認の概要」を参照してください。
Web アプリのコンテキスト外でライブラリ コードにこの属性を適用する場合:
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. }
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET