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

标签 json asynchronous asp.net-web-api httprequest

我创建了一个 WebAPI 项目来帮助捕获 TinCan 学习类(class)中的语句,但我在检索任何请求负载详细信息时遇到了极大的困难。在此有效负载中,我传递了我试图捕获的整个语句,但在尝试使用以下内容进行读取时:

var test = Request.Content.ReadAsFormDataAsync().Result.ToString();

我收到以下错误消息:

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

我尝试过将结果对象转换为 JSON 来解决这个问题,但没有任何用处。我需要在配置中的某个地方配置 json 吗?我尝试过添加

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

还有:

var jsonFormatter = config.Formatters.JsonFormatter;
        config.Formatters.Insert(0, jsonFormatter);

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

Controller 代码

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);
    }

最佳答案

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

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

关于json - 尝试解析 WebAPI 中的 ReadAsFormDataAsync 结果时没有 MediaTypeFormatter 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433855/

相关文章:

android - Android AsyncTask 进度百分比的问题

json - 语法错误: Unexpected token } curly brace in JSON

jquery - 如何限制jquery中json数据的each循环?

ios - 如何异步下载图片并保持顺序?

javascript - WinJS : Returning promise from a function

c# - 在 ApiController 中获取原始发布请求

ASP.NET : The compiler failed with error code -532462766

azure - 如何查看API应用程序的QA环境在App Insights中执行的SQL命令?

Python - 如何检查 JSON 中的键是否为空值?

javascript - 如何使用 Jasmine 1.3.1 和 Atom 进行异步测试