2016-12-28 9 views
0

私はAngularJS、WebApiで作業しています。 Entity-Framework LINQを使用してデータベースからデータをフェッチするためのサービスを用意しました。C#で各Web APIの実行時間を計算するインターセプタを作成します。

私のアプリを実行すると、ウェブAPIがサーバーからの返答にどれくらいの時間を要したかを知りたいですか?

どうすればいいですか?

+0

'ActionFilterAttribute'を使用して例外時間を取得できます。 'OnActionExecuting'で' Stopwatch'を開始し、Elapsed時間を得る場所で 'OnActionExecuted'を停止します。 –

+0

2番目の方法は、カスタム[ミドルウェア](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware)を作成することです。 –

+0

@Div、Ok、私には必要な答えを教えてください多く。私は最後の2日間からこのコードで立ち往生しています。 –

答えて

1

これを達成するにはいくつかの方法があります。

最初の方法は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

は、新しいクラスファイルを追加します使用することです参照してください。

希望します。

関連する問題