C#学习教程:ASP.NETWebAPI-没有“MediaTypeFormatter”可用于读取“Int32”类型的对象在这。我可能在某个地方搞砸了,但我不知道是什么。我的API控制器方法如下所示:publicHttpResponseMessagePut(intid)我也尝试了一个具有相同错误的字符串。有任何想法吗?谢谢。编辑:要清楚-id是一个路由参数。请求的主体是JSON。如果我删除路由参数,该方法工作正常。请阅读以下博客文章:这描述了大多数具有简单参数的典型问题。在不知道有关您的请求的更多详细信息的情况下,无法确定您遇到的是哪个请求。更新还有一个已知的错误,将路由值考虑在内。如果没有内置格式化程序用于POST/PUT/PATCH请求,则不会绑定路由值参数。要解决此问题,最好的解决方案是按照此处所述编写一个ActionFilterAttribute:令人惊讶的是,默认情况下,int和string没有MediaTypeFormatter,因此它不知道如何处理这些类型。它知道如何立即处理的唯一类型是JSON、XML和表单url编码数据。引用自asp.net官网,http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters在WebAPI中,媒体类型决定了WebAPI如何序列化反序列化HTTP消息体。内置对XML、JSON和表单urlencoded数据的支持,您可以编写媒体格式化程序来支持其他媒体类型。现在您可以编写自己的MediaTypeFormatter(我提供的链接将向您展示如何操作),但由于asp.netwebapi仍处于测试阶段,我在使用自定义格式器处理简单类型(如字符串)时遇到了很多麻烦。我发现用xml/json包装你想要PUT的任何值要容易得多,它会自动反序列化。有关详细信息,请参阅我的帖子,当HTTP-POST有正文时,url参数为null对于您的特定示例,您的PUT正文看起来像6然后一定要将http请求的内容类型设置为text/xml(设置到application/json,如果你选择使用)。它应该很好地序列化到变量中。您是否将int值放在请求消息的文本中?如果是这样,格式是什么?如果内容类型是文本,WebAPI将不知道如何处理它,因为WebAPI不提供文本的媒体格式化程序。Despertar指出您可以编写自定义格式化程序。您也可以这样做:publicvoidPut(){vars=Request.Content.ReadAsStringAsync().Result;我发布了一个带有json正文的DELETE并收到了这个。带参数发布解决了问题。附带说明...我已经看到它在服务开始需要“HTTPS”时抛出此错误。以上是C#学习教程:ASP.NETWebAPI-不能用“MediaTypeFormatter”读取“Int32”类型对象的全部内容。注意——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
