这个ASP.Net和Fiddler的例子有什么问题?

Joh*_*ohn 3 fiddler asp.net-web-api

我正在使用Visual Studio 2012 RC.我使用默认路由并具有以下Web API控制器:

public class FooController : ApiController
{
    // GET api/foo
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/foo/5
    public string Get(int id)
    {
        return "value";
    }

    // POST api/foo
    public string Post(string abc)
    {
        Console.WriteLine("value: {0}", abc);
        return "foo" + abc;
    }

    // PUT api/foo/5
    public void Put(int id, string value)
    {
    }

    // DELETE api/foo/5
    public void Delete(int id)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在Fiddler做一个简单的POST测试,所以我有

请求标头
用户代理:Fiddler
内容类型:application/json

请求正文
{"abc":"def"}

当我调试请求时,参数abc为null,而不是"def".我的Fiddler语法有问题吗?

Mik*_*son 5

(1)默认情况下,从URI中获取简单类型.要从请求正文中读取简单类型,请将[FromBody]属性添加到参数中.

public string Post([FromBody] string abc)
Run Code Online (Sandbox Code Playgroud)

(2)'{"abc":"def"}'定义一个具有名为"abc"的属性的对象 - 发送一个JSON字符串,请求体应该只是"def"