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)
从您提供的错误消息,似乎请求内容application/json. ReadAsFormDataAsync()只能读取类型的内容application/x-www-form-urlencoded.
在这种情况下,ReadAsAsync<>如果您要定义要反序列化的类型,则可以使用,ReadAsStringAsync<>如果您只想将内容读取为,则可以使用string.