Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何强制asp.net webapi始终将POST数据解码为JSON_Asp.net Mvc_Json_Asp.net Web Api - Fatal编程技术网

Asp.net mvc 如何强制asp.net webapi始终将POST数据解码为JSON

Asp.net mvc 如何强制asp.net webapi始终将POST数据解码为JSON,asp.net-mvc,json,asp.net-web-api,Asp.net Mvc,Json,Asp.net Web Api,我正在将一些json数据发布到我的asp.net webapi中,但是post参数总是显示为空-数据没有被正确序列化。方法如下所示: public HttpResponseMessage Post(string id, RegistrationData registerData) 问题似乎在于客户端(我无法控制)总是以x-www-form-urlencoded的形式发送内容类型,即使内容实际上是json。这导致mvc尝试将其反序列化为表单数据,但失败了 有没有办法让webapi始终反序列化为j

我正在将一些json数据发布到我的asp.net webapi中,但是post参数总是显示为空-数据没有被正确序列化。方法如下所示:

public HttpResponseMessage Post(string id, RegistrationData registerData)
问题似乎在于客户端(我无法控制)总是以
x-www-form-urlencoded
的形式发送内容类型,即使内容实际上是json。这导致mvc尝试将其反序列化为表单数据,但失败了

有没有办法让webapi始终反序列化为json,并忽略内容类型标题?

我在这里找到了答案:

此代码需要添加到应用程序\u Start或WebApiConfig.Register

foreach (var mediaType in config.Formatters.FormUrlEncodedFormatter.SupportedMediaTypes) 
{
    config.Formatters.JsonFormatter.SupportedMediaTypes.Add(mediaType);
}

config.Formatters.Remove(config.Formatters.FormUrlEncodedFormatter);
config.Formatters.Remove(config.Formatters.XmlFormatter);

它告诉json格式化程序接受每种类型,并删除表单和xml格式化程序

我建议修改传入请求的内容类型,比如在消息处理程序中修改为适当的内容类型,在处理请求之前,是否可以应用这样的筛选器,而不是从配置中删除格式化程序?我知道如何在普通mvc中做到这一点,但在webapi@NathanReed我试图在普通MVC中做到这一点:)你会怎么做?