Web API Post 方法 frombody 为空

Posted

技术标签:

【中文标题】Web API Post 方法 frombody 为空【英文标题】:Web API Post Method frombody is null 【发布时间】:2015-08-07 12:37:49 【问题描述】:

我有发布方法

[HttpPost]
public HttpResponseMessage Post(MemberViewModel model)

同一控制器中的另一个发布方法。我在登录方法中添加属性路由

[Route("api/members/login")]
[HttpPost]
public HttpResponseMessage Login([FromBody]LoginViewModel model)


public class LoginViewModel

    public string UserName  get; set; 
    public string Password  get; set; 

默认的 post 方法工作正常,但是 当我调用 Login Post Method 模型时(LoginViewModel 始终为空)。我用 fiddler 做测试。

提琴手

POST http://localhost:49595/api/members/login/Http/1.1

用户代理:提琴手

内容类型:应用程序/JSON

主机:本地主机:49595

内容长度:79

请求正文 “用户名”:customer@gmail.com, “密码”:“393f83x393”

使用一个参数就可以正常工作

[Route("api/members/login")]
[HttpPost]
public HttpResponseMessage Login([FromBody]string userName)

请指教 Model 有什么问题

谢谢。

【问题讨论】:

【参考方案1】:

您的 Fiddler 会显示这一行:

请求正文“用户名”:customer@gmail.com,“密码”:“393f83x393”

这不是有效的 JSON。电子邮件帐户应该用单引号或双引号括起来。

【讨论】:

您好 JotaBe,感谢您的回答。实际上,我忘记在我的问题中为用户名加上双引号。我认为 Fiddler 有问题。

以上是关于Web API Post 方法 frombody 为空的主要内容,如果未能解决你的问题,请参考以下文章

使用 HttpClient 和 Web API 方法 [FromBody] 参数发布到 Web API 最终为空

mvc web api 关于post参数怎么接收,求教

c#web api - 如何在post方法后返回ID?

Web API HttpDelete - 如何调用删除 API 方法并在 [FromBody] 中发送模型

WEB API FromBody 提交

同时使用 [FromUri] 和 [FromBody] 绑定复杂的 Web Api 方法参数