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.
105 lines
4.2 KiB
105 lines
4.2 KiB
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");
|
|
|
|
}
|
|
|
|
}
|
|
}
|