尝试解析WebAPI中的ReadAsFormDataAsync结果时没有MediaTypeFormatter错误

Jay*_*Jay 2 json asynchronous httprequest asp.net-web-api

我创建了一个WebAPI项目来帮助捕获来自TinCan学习课程的语句,但是我在检索任何Request有效负载细节方面遇到了极大的困难.在这个有效负载内,我传递了我想要捕获的整个语句,但在尝试使用时读取:

var test = Request.Content.ReadAsFormDataAsync().Result.ToString();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

没有MediaTypeFormatter可用于从媒体类型为"application/json"的内容中读取"FormDataCollection"类型的对象.

我已经尝试将结果对象转换为JSON来克服这个问题,但它没有任何用处.我是否需要在配置中的某处配置json?我试过添加

var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
        config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
Run Code Online (Sandbox Code Playgroud)

并且:

var jsonFormatter = config.Formatters.JsonFormatter;
        config.Formatters.Insert(0, jsonFormatter);
Run Code Online (Sandbox Code Playgroud)

到我的WebApiConfig.cs文件回答另一个如何返回json的问题,但我似乎无法传递此错误.我也设置了config.formatter来接受application/json,但这也没有用

控制器代码

public void Put([FromBody]string statementId)
    {   
        var test = Request.Content.ReadAsFormDataAsync().Result;

        System.Diagnostics.EventLog.WriteEntry("Application", "/xAPI/PUT has been called", System.Diagnostics.EventLogEntryType.Error);
    }
Run Code Online (Sandbox Code Playgroud)

Mag*_*ing 5

从您提供的错误消息,似乎请求内容application/json. ReadAsFormDataAsync()只能读取类型的内容application/x-www-form-urlencoded.

在这种情况下,ReadAsAsync<>如果您要定义要反序列化的类型,则可以使用,ReadAsStringAsync<>如果您只想将内容读取为,则可以使用string.