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 为空的主要内容,如果未能解决你的问题,请参考以下文章

Post 方法没有在 api 调用中发送我的数据

自定义 Web api 上的 POST 405(不允许的方法)

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

如何将json POST数据作为对象传递给Web API方法?

如何在 Web API Post 方法中返回自定义消息

如何在目标c中的asp.net web api方法中使用POST方法?