Web API POST对象始终为null

时间:2018-10-01 19:04:20

标签: c# asp.net rest asp.net-web-api

我是ASP.NET Web API的新手,我正在尝试编写一种将发送电子邮件的API方法。

这是我的sendEmail控制器:

[Route("sendemail")]
[HttpPost]
public bool SendEmail(EmailObj email)
{
    var To = email.sendTo;
    var Subject = email.subject;
    var Message = email.message;
    ...
}

但是,每当我使用邮递员对其进行测试时,发送的对象都是null。 这就是我的json对象在邮递员中的构建方式:

{
    "subject": "Test Message",
    "message": "this is a test",
    "sendTo": "sam@test.com"
}

我确保该类型在邮递员上被标记为JSON,并尝试以其他方式设置其格式,但似乎不起作用。该API接收电子邮件对象,但始终为null。

这里是screenshot of my postman,以防万一我遗漏了某些东西。

感谢您的帮助。

编辑:已经尝试在json中添加“ [FromBody]”并添加“ email:{}”,但是它不起作用。

3 个答案:

答案 0 :(得分:0)

您可以做两件事:

$ keytool -keystore /Users/xxx/QS/platforms/android/appreleasedemo.keystore -list

Keystore type: jks
Keystore provider: SUN

Your keystore contains 1 entry

appreleasedemoalias, Oct 1, 2018, PrivateKeyEntry, 
Certificate fingerprint (SHA1): FC:63:EC:88:0A:A2:ED:B4:7A:34:C1:76:F9:98:F5:E0:8D:85:7A:4F

或将json对象的主体更改为:

public bool SendEmail([FromBody]EmailObj email)

答案 1 :(得分:0)

我发现了什么错误,我将我的电子邮件对象声明为“可序列化”,这阻止了json对象获得任何值。

答案 2 :(得分:0)

You can compare your controller with below code and you can click this link and see the output.

[RoutePrefix("api/test")]
public class TestController : ApiController
{

   [Route("sendemail")]
   [HttpPost]
   public bool SendEmail(EmailObj email)
   {
       if(email !=null)
       {
           return true;
       }
       return false;
   }

}

public class EmailObj
{
    public string sendTo { get; set; }
    public string subject { get; set; }
    public string message { get; set; }
}

This is my postman image that how I have called the post api.

This is my WebApi.config file image.