.Net Core 1.1 Web API Json输入/输出格式化程序

时间:2017-04-15 15:07:50

标签: c# asp.net-core-webapi asp.net-core-1.1

我正在构建一个Web API,我可以在启动类中添加输入/输出格式化程序。这适用于XML,但它不适用于Json。我知道默认情况下会添加Json,但如果未指定Accept标头,它似乎会选择XML。

public void ConfigureServices(IServiceCollection services)
{
   //Add framework services.
   services.AddMvc(options =>
   {
       options.RequireHttpsPermanent = true;
       options.RespectBrowserAcceptHeader = true;
       options.ReturnHttpNotAcceptable = true;
       options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
       options.InputFormatters.Add(new XmlDataContractSerializerInputFormatter());
     });

    services.AddDbContext<CustomerManagerContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))
    );

    services.AddScoped<IUnitOfWork, UnitOfWork>();
}

在configure服务方法中,我添加了xmlSerializer但是这对Json不起作用:

options.OutputFormatters.Add(new JsonOutputFormatter());

默认格式化程序是添加到格式化程序列表中的第一个格式化程序。我想在XML之前添加Json格式化程序,因此它将成为默认格式。我错过了什么?如何正确添加Json格式化程序,使其成为格式化程序列表中的第一个?

1 个答案:

答案 0 :(得分:0)

我假设请求的Accept标头是为XML而不是JSON设置的。仅当请求的Accept标头指定格式时才进行协商,否则使用默认值(默认为JSON),如果不能满足请求,则服务器决定。

如果你一直在使用XML,我猜是消费者的请求是要求XML。