.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ですコンポーネントが移植されているここです。