مراحل زیر را برای ایجاد یک FilterAttribute طی کنید:
1- کلاسی بسازید و از اینترفیس IActionFilter
ارثبری کنید.Install-Package Microsoft.AspNetCore.Mvc.Core -Version 2.2.5
2- متدهای این اینترفیس یعنی را پیادهسازی کنید.
3- از قاعده زیر پیروی کنید
• این مثال موردی بدون استفاده از لایبرری MVC را شرح میدهد.
internal class SecondSampleAttribute : Attribute, IActionFilter { public void OnActionExecuting(ActionExecutingContext context) { // Do something before the action executes. logData.ActionName = context.ActionDescriptor.RouteValues["action"]; logData.ServiceName = context.ActionDescriptor.RouteValues["controller"]; var t1 = RequestBodyAsString_Async(context.HttpContext.Request).Result; } public void OnActionExecuted(ActionExecutedContext context) { // Do something after the action executes. var t2 = context.Result; if (t2 is JsonResult json) { var tt = json.Value; } if (t2 is IEnumerable<string> items) { var tty = items.ToString(); } if (t2 is IActionResult actionResult) { var ee = actionResult as OkObjectResult; var asss = ee.Value; } if (t2 is ViewResult vResult) { var dfdf = vResult.ViewData; } if (t2 is object sObj) { var afsas = sObj._Serializer(); } } /// <summary> /// Read request body as string /// </summary> /// <param name="request"></param> /// <returns></returns> private async Task<string> RequestBodyAsString_Async(HttpRequest request) { string _Result = string.Empty; try { var body = request.Body; using (StreamReader stream = new StreamReader(body)) { _Result = await stream.ReadToEndAsync(); } } finally { } return _Result; } }