C#Asp.net Web API-创建JSON/XML转换器API

C#Asp.net Web API-创建JSON/XML转换器API,c#,asp.net,asp.net-mvc-4,asp.net-web-api,C#,Asp.net,Asp.net Mvc 4,Asp.net Web Api,作为练习,我想创建一个在XML和JSON之间转换的ASP.NETWebAPI 这就是我到目前为止所做的: 我认为内容类型检查是正确的,但我无法进行测试,因为我在尝试和发布时得到了“方法不允许”,有可能通过路由/绑定来实现我的目标吗 我试图用Fiddler来测试这一点: 我的路线如下所示: 我的webapi路由如下所示: 但我仍然得到不允许的方法:=/ 尝试用注释注释动作参数。下面是一个例子: public class TestController : ApiController { p

作为练习,我想创建一个在XML和JSON之间转换的ASP.NETWebAPI

这就是我到目前为止所做的:

我认为内容类型检查是正确的,但我无法进行测试,因为我在尝试和发布时得到了“方法不允许”,有可能通过路由/绑定来实现我的目标吗

我试图用Fiddler来测试这一点:

我的路线如下所示:

我的webapi路由如下所示: 但我仍然得到不允许的方法:=/

尝试用注释注释动作参数。下面是一个例子:

public class TestController : ApiController
{
  public string Post([FromBody] string jsonOrXml)
  {
    // Process the input
  }
}
在这种情况下,
内容类型
请求头必须是
应用程序/x-www-form-urlencoded
,并且正文将采用以下格式:
=[JSON或XML数据]
。更多的细节将被给出


希望这能有所帮助。

您如何称呼这一行动?你能出示你的客户代码吗?另外,请显示您当前的路由设置。@DarinDimitrov我添加了以下信息:)不,您显示的是MVC路由设置,而不是Web API路由。这是两件完全不同的事情。此外,您也不能期望在POST操作中将POST请求负载放入名为
jsonOrXml
的变量中。您必须从请求正文中读取它。它不会作为参数出现。或者,如果您需要,您必须编写一个自定义模型绑定器或格式化程序。@DarinDimitrov对不起,我们的webapi路由在哪里?如何从请求正文中加载?默认情况下,当您使用向导创建新应用程序时,它们被放置在
~/App\u Start/WebApiConfig.cs
中。另外,从Fiddler屏幕截图中,我可以看到您提供了无效的JSON负载:
{sample:“true”}
。有效的JSON应该如下所示:
{“sample”:“true”}
。谢谢,这解决了方法未找到错误,但是“jsonOrXml”变量是null@GreyCloud我已经更新了我的答案(为另一个SO问题添加了有用的链接)。谢谢,这看起来很有希望,这意味着我必须包装任何json或xml,例如{“toconvert”:{“sample”:“1”}为了匹配MVCi中的一个模型,我将在明天进行试验,同时我想知道是否可以不包装就完成这项工作?@GreyCloud只要使用
application/x-www-form-urlencoded
作为内容类型,就不必包装任何内容。否则,需要将POST数据(JSON或XML字符串)映射到的模型类型(加上正确的请求类型)。