.NETコアMVC / WEBAPIフィルタ(FilterAttribute)依存性注入

.NETコアMVCと.NETコアWEBAPIプロジェクトでは通常、フィルタにインターフェース、パラメータの検証の問題の数に対処するためのFilterAttribute権限を追加する必要があります。我々はこれにプラグインシステムは、注入されたフィルタ(クラス)とを使用する必要があります。ゼロ引数のコンストラクタに私たちを要求しませんコントローラメソッドのフィルタでマーク。この問題に対処するには?

最初のステップ:フィルタを注入

public void ConfigureServices(IServiceCollection services)
{ 
            //注入筛选器
            services.AddScoped<ApiActionFilterAttribute>();
}

ActionFilterAttributeから継承されたActionFilterAttributeのApiActionFilterAttributeカスタムは、[その他のフィルタもそうすることができます]

ステップ2:メソッドの追加コールアウト


        [ServiceFilter(typeof(ApiActionFilterAttribute))]

私は、このサービスを提供してきましたServiceFilterマイクロソフトを利用するためにここにいます。

 

第三段階:登録コンポーネント(プラグ型)を使用し

 public class ApiActionFilterAttribute : ActionFilterAttribute
 {
        private readonly ILogger<ApiActionFilterAttribute> _logger; 
        public ApiActionFilterAttribute(Microsoft.Extensions.Options.IOptions<ILogger<ApiActionFilterAttribute> logger)
        { 
            _logger = logger;
        }
        public override void OnActionExecuting(ActionExecutingContext actionContext)
        {
            _logger.LogInformation(Newtonsoft.Json.JsonConvert.SerializeObject(actionContext.HttpContext.Request.Headers));
        }
}

私はあなたがここでコンポーネントを使用することができ、ILoggerですコンポーネントが移植されているここです。

公開された12元の記事 ウォンの賞賛0 ビュー653

おすすめ

転載: blog.csdn.net/oopxiajun2011/article/details/104874466