0
私はAngularJS、WebApiで作業しています。 Entity-Framework LINQを使用してデータベースからデータをフェッチするためのサービスを用意しました。C#で各Web APIの実行時間を計算するインターセプタを作成します。
私のアプリを実行すると、ウェブAPIがサーバーからの返答にどれくらいの時間を要したかを知りたいですか?
どうすればいいですか?
私はAngularJS、WebApiで作業しています。 Entity-Framework LINQを使用してデータベースからデータをフェッチするためのサービスを用意しました。C#で各Web APIの実行時間を計算するインターセプタを作成します。
私のアプリを実行すると、ウェブAPIがサーバーからの返答にどれくらいの時間を要したかを知りたいですか?
どうすればいいですか?
これを達成するにはいくつかの方法があります。
最初の方法はActinoFilterを使用することです。そのため、ここではLoggingMiddleware
public class LoggingMiddleware
{
private readonly RequestDelegate _next;
LoggingDataAccess _loggingDataAccess; // your data access
readonly Stopwatch _stopwatch = new Stopwatch();
public LoggingMiddleware(RequestDelegate next, LoggingDataAccess loggingDataAccess)
{
_next = next;
_loggingDataAccess = loggingDataAccess;
}
public async Task Invoke(HttpContext context)
{
// start request time
_stopwatch.Start();
await _next.Invoke(context);
// end request time and get elapsed milliseconds
_stopwatch.Stop();
// save time to your table
var time= _stopwatch.ElapsedMilliseconds;
//reset stopwatch
_stopwatch.Reset();
}
}
は
public void Configure(IApplicationBuilder app...)
{
app.UseMiddleware<LoggingMiddleware>();
}
Startup.cs
(ASP.NETコア)であなたのミドルウェアを追加だ、this answer. 第二の方法はMiddleware
は、新しいクラスファイルを追加します使用することです参照してください。
希望します。
'ActionFilterAttribute'を使用して例外時間を取得できます。 'OnActionExecuting'で' Stopwatch'を開始し、Elapsed時間を得る場所で 'OnActionExecuted'を停止します。 –
2番目の方法は、カスタム[ミドルウェア](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware)を作成することです。 –
@Div、Ok、私には必要な答えを教えてください多く。私は最後の2日間からこのコードで立ち往生しています。 –