You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.Filters;using System;using System.Collections.Generic;using System.Reflection;using System.Text;
namespace Shentun.WebApi.Service{ public class WebApiActionFilterAttribute : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext context) { //Console.WriteLine("WebApiActionFilter.OnActionExecuted");
if (context.Result != null) { if (context.Result is ObjectResult) { var result = context.Result as ObjectResult; if (!(result is IReturnValue)) { if (result.StatusCode == StatusCodes.Status404NotFound) { context.Result = new OkObjectResult(ReturnValue.CreateNotFoundInstance()); } else if(result.StatusCode != StatusCodes.Status200OK && result.StatusCode!=null) { context.Result = new OkObjectResult(ReturnValue.CreateErrorInstance(result.Value.ToString())); } else { context.Result = new OkObjectResult(ReturnValue.CreateSuccessInstance(result.Value)); }
} } else if (context.Result is EmptyResult) { context.Result = new OkObjectResult(ReturnValue.CreateSuccessInstance()); } else if (context.Result is ContentResult) { var result = context.Result as ContentResult; context.Result = new OkObjectResult(ReturnValue.CreateSuccessInstance(result.Content)); } else if (context.Result is BadRequestResult) { var result = context.Result as BadRequestResult; context.Result = new OkObjectResult(ReturnValue.CreateErrorInstance("BadRequestResult")); } else if (context.Result is NoContentResult) { var result = context.Result as NoContentResult; context.Result = new OkObjectResult(ReturnValue.CreateErrorInstance("NoContentResult")); } else if (context.Result is NotFoundResult) { var result = context.Result as NotFoundResult; context.Result = new OkObjectResult(ReturnValue.CreateNotFoundInstance()); } else if (context.Result is FileStreamResult) { //直接返回
//var result = context.Result as FileStreamResult;
//context.Result = new OkObjectResult(result);
} else if (context.Result is FileContentResult) { //直接返回
//var result = context.Result as FileContentResult;
//context.Result = new OkObjectResult(result);
} else { //context.Result = new OkObjectResult(ReturnValue.CreateErrorInstance(context.Result));
//throw new Exception($"未经处理的Result类型:{ context.Result.GetType().Name}");
} }
base.OnActionExecuted(context);
}
public override void OnActionExecuting(ActionExecutingContext context) { //Console.WriteLine("WebApiActionFilter.OnActionExecuting");
//context.Result = ReturnValue<context.Result>.CreateSuccessReturnValue(context.Result)
}
public override void OnResultExecuting(ResultExecutingContext context) { //Console.WriteLine("WebApiActionFilter.OnResultExecuting");
}
public override void OnResultExecuted(ResultExecutedContext context) { //Console.WriteLine("WebApiActionFilter.OnResultExecuted");
}
}}
|