ASP.NET Core 2中的默认输入格式化程序

时间:2018-02-18 12:28:04

标签: asp.net-mvc asp.net-core-mvc

在ASP.NET Core 2应用程序中,我有一个[FromBody]属性的操作。该参数由ASP.NET引擎从JSON主体转换为模型对象。

但只有在Content-Type请求设置为application/json时才有效。如果未设置标头,则返回 415(不支持的媒体类型) HTTP错误。

如何将[FromBody]绑定的默认格式化程序设置为JSON,因此即使未设置Content-Type请求标头,它也会绑定模型?

1 个答案:

答案 0 :(得分:3)

如果您没有指定内容类型,则它假定的默认内容类型是“text / plain”。您可以使用以下代码强制应用程序将有效负载视为json内容,

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(config =>
            {
                foreach (var formatter in config.InputFormatters)
                {
                    if (formatter.GetType() == typeof(JsonInputFormatter))
                        ((JsonInputFormatter)formatter).SupportedMediaTypes.Add(
                            Microsoft.Net.Http.Headers.MediaTypeHeaderValue.Parse("text/plain"));
                }
            }
            );
        }