C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#ASP.NET WebAPIでログ記録用のLOGフィルターを作成するにはどうすればよいですか?


アクションフィルターは、アクションメソッドの実行前または実行後にロジックを追加するために使用されます。OnActionExecutingメソッドとOnActionExecutedメソッドは、アクションメソッドの実行前後にロジックを追加するために使用されます。

アクションメソッドの実行の前後にいくつかの情報をログに記録するActionFilterAttributeを実装するLogAttributeを作成してみましょう。

LogAttribute

using System;
using System.Diagnostics;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
namespace DemoWebApplication.Controllers{
   public class LogAttribute : ActionFilterAttribute {
      public override void OnActionExecuting(HttpActionContext actionContext){
         Debug.WriteLine(string.Format("Action Method {0} executing at {1}",
            actionContext.ActionDescriptor.ActionName, DateTime.Now.ToShortDateString()),
            "Web API Logs");
      }
      public override void OnActionExecuted(HttpActionExecutedContext
      actionExecutedContext){
         Debug.WriteLine(string.Format("Action Method {0} executed at {1}",
         actionExecutedContext.ActionContext.ActionDescriptor.ActionName,
         DateTime.Now.ToShortDateString()), "Web API Logs");
      }
   }
}

コントローラーアクション

using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      [Log]
      public IHttpActionResult Get(){
         //Some logic
         return Ok();
      }
   }
}

OnActionExecutingメソッドとOnActionExecutedメソッドが実装されているLog属性を使用したため、ログ情報がデバッグコンソールに追加されます。

C#ASP.NET WebAPIでログ記録用のLOGフィルターを作成するにはどうすればよいですか?



  1. C#ASP.NET WebAPIのアクションメソッドからカスタム結果タイプを返す方法は?

    IHttpActionResultインターフェイスを実装することで、結果タイプとして独自のカスタムクラスを作成できます。 。 IHttpActionResultには、HttpResponseMessageインスタンスを非同期的に作成する単一のメソッドExecuteAsyncが含まれています。 public interface IHttpActionResult {    Task<HttpResponseMessage> ExecuteAsync(CancellationToken    cancellationToken); } コントロ

  2. C#ASP.NET WebAPIでのコントローラーアクションのさまざまな戻り値の種類は何ですか?

    Web APIアクションメソッドは、次のリターンタイプを持つことができます。 ボイド プリミティブ型/複合型 HttpResponseMessage IHttpActionResult 無効 − すべてのアクションメソッドが何かを返す必要はありません。ボイドリターンタイプにすることができます。 例 using DemoWebApplication.Models using System.Web.Http; namespace DemoWebApplication.Controllers{    public class DemoCont