【发布时间】:2022-01-10 14:17:25
【问题描述】:
我正在处理其中一个需求,我需要修改中间件中的结果数据(不是任何 MVC 过滤器,因为通过中间件注入了一些其他服务)。
在中间件中,我获取 json 格式的数据,然后反序列化该数据,然后更新该数据,最后序列化为 JSON 并将其作为响应发送回。
我不想在 MVC 管道中序列化数据,所以我尝试删除输出格式化程序,但这对我不起作用并引发错误。
services.AddControllers(options =>
{
options.OutputFormatters.Clear();
});
是否有任何解决方案可以在管道中获取 .Net 对象并修改该对象(就像我们在 MVC 过滤器中所做的那样),然后最后进行序列化?
【问题讨论】:
-
你能提供你想做的伪代码吗?我有点困惑。您是要修改返回的
ActionResult(我认为只有 Action Filter 可以这样做,因为中间件没有 ActionResult 的概念)、响应或其他什么? -
你检查Result filters了吗?
-
@LukeVo 我使用soapcore nuget 包将我的服务公开为带有REST 的SOAP。如果我要修改结果过滤器中的结果,它将适用于 REST 请求,因为 SOAPCORE 与 mvc 管道分开,我不想在 2 个地方编写我的业务逻辑(用于结果过滤器中的 REST 请求和中间件中的 SOAP) .
-
我明白了。那么是的,您将需要使用
HttpContext.Items,或范围服务。
标签: asp.net asp.net-mvc asp.net-core asp.net-core-middleware