有没有一种方法可以包含只针对单个端点运行的InputFormatter?我们有一个单独的端点,它需要一个自定义的InputFormatter。因此,我们并不想为了单个端点而全局添加输入格式化程序。我也不是真的想写一个对每个请求都能运行的繁琐的中间件。某种类型的ActionFilter将是完美的。
我已经看到了关于这个主题的现有SO答案,但它们都有需要过时的API的答案,例如,InputFormatters集合不再适用于操作中的上下文筛选器。
干杯
发布于 2021-11-17 10:23:16
下面是一个示例,它可以帮助您控制操作方法的输入格式化程序。
public class CSPContentTypeFormatterAttribute : ResultFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext context)
{
var options = context
.HttpContext
.RequestServices
.GetService(serviceType: typeof(IOptions<MvcOptions>)) as IOptions<MvcOptions>;
var mvcOptions = options.Value;
mvcOptions.InputFormatters.OfType<SystemTextJsonInputFormatter>().First()
.SupportedMediaTypes.Add(
new Microsoft.Net.Http.Headers.MediaTypeHeaderValue("application/csp-report")
);
base.OnResultExecuting(context);
}
}https://stackoverflow.com/questions/69996373
复制相似问题