默认格式化程序被自定义格式化程序覆盖

时间:2019-01-15 19:58:55

标签: .net

我已经按照文档(https://docs.microsoft.com/en-us/aspnet/core/web-api/advanced/custom-formatters?view=aspnetcore-2.2)制作了自定义格式器。我的自定义格式化程序将响应写为特殊类型的字节数组,并且当请求的“接受”标头中包含“应用程序/八位字节流”时,应使用该格式。

我希望默认值仅返回一个json对象,就像使用“ application / json”调用它时一样,但是默认情况下,当我不指定标头时,默认使用我的格式化程序。如何解决此问题,仅使用默认的JsonOutputFormatter?

我正在添加这样的格式化程序:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(options =>
    {
        options.OutputFormatters.Insert(0, new OctetStreamOutputFormatter());
    });
}

1 个答案:

答案 0 :(得分:0)

因此,事实证明,不覆盖默认格式化程序的方法是将Add添加到OutputFormatters的末尾,而不是插入列表的开头。此更改有效:

我已经按照文档(https://docs.microsoft.com/en-us/aspnet/core/web-api/advanced/custom-formatters?view=aspnetcore-2.2)制作了自定义格式器。我的自定义格式化程序将响应写为特殊类型的字节数组,当请求的“接受”标头中包含“应用程序/八位字节流”时,应使用该响应。

我希望默认值仅返回一个json对象,就像使用“ application / json”调用它时一样,但是默认情况下,当我不指定标头时,默认使用我的格式化程序。如何解决此问题,仅使用默认的JsonOutputFormatter?

我正在添加这样的格式化程序:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(options =>
    {
        options.OutputFormatters.Add(new OctetStreamOutputFormatter());
    });
}