webapicore全局拦截200的结果进行文本替换等逻辑操作办法
简书链接:webapicore全局拦截200的结果进行文本替换等逻辑操作办法
文章字数:243,阅读全文大约需要1分钟
方法1 中间件实现
1 | using System.IO; |
1 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env) |
方法2
1 | using System.IO; |
调整controller
1 | [ServiceFilter(typeof(TextReplaceFilter))] |
另外
1 |
|
还有一些坑,kenel需要禁用缓冲区最后换了一种办法
1
2
3
4
5
6
7
8
9
10public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
var resultContext = await next();
if (resultContext.Result is ObjectResult objectResult)
{
var response = context.HttpContext.Response;
if (objectResult.StatusCode == 200|| response.StatusCode==200)
{
var responseString = objectResult.Value.ToString();
1 |
|
var actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
var controllerName = actionDescriptor?.ControllerName;
var actionName = actionDescriptor?.ActionName;
// 获取Controller的描述信息
var controllerType = actionDescriptor?.ControllerTypeInfo.AsType();
var controllerName1 = context.RouteData.Values["controller"];
var actionName1 = context.RouteData.Values["action"];
1 | 获取displayName |
DisplayNameAttribute displayName = context.ActionDescriptor.GetProperty<DisplayNameAttribute>();
methodDescriptor= actionDescriptor.MethodInfo.GetCustomAttribute<DisplayNameAttribute>()?.DisplayName;
var displayNameAttribute = context.ActionDescriptor.EndpointMetadata
.OfType<DisplayNameAttribute>()
.LastOrDefault()?.DisplayName;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 情迁博客!
评论