ASP.NETのminimal APIでFilterのインスタンスを利用する方法
ASP.NETのMinimal APIでFilterのインスタンスを生成して利用する方法です。FilterをDIで使用するには以下のように書きます。
app.MapGet("/chat", ...).AddEndpointFilter<MyLogFilter>()
インスタンスを渡すことも可能です。
app.MapGet("/chat", ...).AddEndpointFilter(new MyLogFilter())
しかしながら実際には毎回のWEBリクエストごとにインスタンスを生成したい場合もあります。その場合にはAddEndpointFilterFactoryメソッドを使います。
app.MapPost("/my-page", () =>
{
// Some code...
return Results.Ok();
})
.AddEndpointFilterFactory((context, next) =>
{
var filter = new MyLogFilter();
filter.Settings.Information = true;//何か設定
return invocationContext => filter.InvokeAsync(invocationContext, next);
});
ログを記録するフィルターでURLごとで何を記録するか設定したい場合などに有効です。