私はASP.NET MVCコアアプリケーションをbuilingていると私は私がGlobal.asaxのに前に持っていたようEndRequestのイベントを持っている必要があります。.NETコアEndRequestのミドルウェア
どうすれば実現できますか?
私はASP.NET MVCコアアプリケーションをbuilingていると私は私がGlobal.asaxのに前に持っていたようEndRequestのイベントを持っている必要があります。.NETコアEndRequestのミドルウェア
どうすれば実現できますか?
ミドルウェアを作成し、できるだけ早くパイプラインに登録するのと同じくらい簡単です。例えば
:
public class EndRequestMiddleware
{
private readonly RequestDelegate _next;
public EndRequestMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
// Do tasks before other middleware here, aka 'BeginRequest'
// ...
// Let the middleware pipeline run
await _next(context);
// Do tasks after middleware here, aka 'EndRequest'
// ...
}
}
await _next(context)
への呼び出しがパイプラインダウンすべてのミドルウェアを実行します。すべてのミドルウェアが実行された後、の後にのawait _next(context)
コールが実行されます。ミドルウェアの詳細については、ASP.NET Core middleware docsを参照してください。特に、ドキュメントからこの画像は、ミドルウェアの実行が明らかに:
は、今、私たちは、好ましくは、できるだけ早く、Startup
クラスのパイプラインにそれを登録する必要があります。
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<EndRequestMiddleware>();
// Register other middelware here such as:
app.UseMvc();
}
リクエストが終了する前になぜ呼び出されるのかわかりませんか? – Vnuuk
@Vnuuk私は自分の答えを更新しました。また、[ミドルウェアに関する文書](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware)を読むことをお勧めします。 –
私はこれがHTTPから重複していると思います: //stackoverflow.com/questions/35705830/how-to-implement-global-asax-events-by-owin – error505