我正在构建一个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格式化程序,使其成为格式化程序列表中的第一个?
答案 0 :(得分:0)
我假设请求的Accept标头是为XML而不是JSON设置的。仅当请求的Accept标头指定格式时才进行协商,否则使用默认值(默认为JSON),如果不能满足请求,则服务器决定。
如果你一直在使用XML,我猜是消费者的请求是要求XML。