مراحل زیر را برای ایجاد یک 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;
}
}