ASP.NET Web API:来自默认值控制器的发布方法在 RC 版本中不起作用



创建默认 ASP.NET Web Api项目时,默认ValuesController具有如下的post方法:

// POST api/values
public void Post(string value)
{
}

我试图用HTTP请求从Filder测试这个POST方法:

POST /api/values
User-Agent: Fiddler
Host: localhost
Content-Type: application/x-www-form-urlencoded
value=abc

这让我感到惊讶,输入参数,而不是 abc。它肯定在测试版中有效,但在 RC 版本中,我做错了什么还是不再像这样工作了?

当然,我们还有另一种解决方法,可以在下面创建强类型对象:

public Class TestDto
{
    public string Value { get; set; }
}
public void Post(TestDto testDto)
{  
}

或者使用 Json。

但我想对此有更多的了解。

(1) 默认情况下,简单类型取自 URI。若要从请求正文中读取简单类型,请将 [FromBody] 属性添加到参数。(项目模板的已知问题。在 RTM 版本中,项目模板将包含此信息在 ValuesController 中。

(2)对于formurl编码,发送一个简单的类型为"=abc"而不是"value=abc";请参阅 http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1#sending_simple_types。

相关内容

最新更新