代码之家  ›  专栏  ›  技术社区  ›  MMAdams

自定义格式化程序正在重写默认格式化程序

  •  0
  • MMAdams  · 技术社区  · 6 年前

    我按照文档制作了一个自定义格式化程序( https://docs.microsoft.com/en-us/aspnet/core/web-api/advanced/custom-formatters?view=aspnetcore-2.2 )我的自定义格式化程序将响应作为一种特殊的字节数组写出,当请求的“accept”头中有“application/octet-stream”时应该使用它。

    我希望默认值只是返回一个JSON对象,就像使用“application/json”调用它时那样,但是当我不指定头时,它默认值是使用格式化程序。如何修复此问题并只使用默认的jsonOutputFormator?

    我添加的格式化程序如下:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(options =>
        {
            options.OutputFormatters.Insert(0, new OctetStreamOutputFormatter());
        });
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   MMAdams    6 年前

    因此,不重写默认格式化程序的方法是添加到输出格式化程序的末尾,而不是插入到列表的开头。这一变化起了作用:

    我按照文档制作了一个自定义格式化程序( https://docs.microsoft.com/en-us/aspnet/core/web-api/advanced/custom-formatters?view=aspnetcore-2.2 )我的自定义格式化程序将响应作为一种特殊的字节数组写出,当请求的“accept”头中有“application/octet-stream”时应该使用它。

    我希望默认值只是返回一个JSON对象,就像使用“application/json”调用它时那样,但是当我不指定头时,它默认值是使用格式化程序。如何修复此问题并只使用默认的jsonOutputFormator?

    我添加的格式化程序如下:

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