Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api 这个ASP.Net和Fiddler示例有什么问题?_Asp.net Web Api_Fiddler - Fatal编程技术网

Asp.net web api 这个ASP.Net和Fiddler示例有什么问题?

Asp.net web api 这个ASP.Net和Fiddler示例有什么问题?,asp.net-web-api,fiddler,Asp.net Web Api,Fiddler,我正在使用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 p

我正在使用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)
    {
    }
}
公共类FooController:ApicController
{
//获取api/foo
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
//获取api/foo/5
公共字符串Get(int-id)
{
返回“值”;
}
//后api/foo
公共字符串Post(字符串abc)
{
WriteLine(“值:{0}”,abc);
返回“foo”+abc;
}
//放置api/foo/5
公共void Put(int-id,字符串值)
{
}
//删除api/foo/5
公共无效删除(int-id)
{
}
}
我想在Fiddler中做一个简单的POST测试,所以我

请求头
用户代理:Fiddler
内容类型:应用程序/json

请求主体
{“abc”:“def”}

当我调试请求时,参数abc以null的形式出现,而不是“def”。我的Fiddler语法有问题吗?

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

public string Post([FromBody] string abc)

(2) “{abc”:“def”}”定义了一个名为“abc”的属性的对象-要发送JSON字符串,请求主体应该是“def”

这个答案来自ASP.NETWebAPI站点上的一个链接,它原来是Mike的博文(起初我没有意识到)。WebAPI团队已经做出了一些与普通MVC控制器截然不同的参数绑定决策

发送“简单类型”的正确语法是

在Fiddler中,你把

=def          //THIS CANNOT HAVE QUOTES AND = IS MANDATORY
好的,这里是与MVC工作方式非常不同的部分

  • 正如迈克所说,你必须使用[FromBody]
  • 您只能有一个参数。如果您想要不止一个参数,您有两个选择:i)使用url查询参数,而不是请求正文;ii)使用复杂对象(即您自己的类)
  • 请求正文应为simple=def,不能使用命名参数
    在Fiddler中它应该是=def,而不是“def”。我贴了一个答案,上面有我错过的更多细节。啊,我一定是刚刚醒来。聪乐昨天回答了我的问题,但后来从我的帖子中删除了他的答案。他提出了自己的问题,迈克,你回答了。答案是你的博客文章。直到刚才我才注意到。
    =def          //THIS CANNOT HAVE QUOTES AND = IS MANDATORY