为什么 WebHook 的 WebApi 配置不能在 POST 上运行?

Why doesn't WebApi config for WebHook work on POST?

我想从 WebHook 获取来自 IFTTT 的发布数据。它在使用 GET 时有效,但在使用 POST 时无效。

[HttpPost]
[Route("InsertData")]
public IActionResult InsertData([FromBody] string FromAddress)
{
    try
    {
         //var fromAddress = Request.Form["FromAddress"].ToString();
        _webHookDb.UserData.Add(new UserData()
        {  
            FromAddress = FromAddress,
            DateTime = DateTime.Now
        });
        _webHookDb.SaveChanges();
        return new JsonResult(FromAddress);
    }
    catch (Exception ex)
    {
        return BadRequest(ex.Message);
    }
}

创建一个模型来保存数据

public class Model {
    public string FromAddress { get; set; }
}

在动作端点中使用它。

[HttpPost]
[Route("InsertData")]
public async Task<IActionResult> InsertData([FromBody] Model model) {
    try {
        if(ModelState.IsValid) {
            _webHookDb.UserData.Add(new UserData() { 
                FromAddress = model.FromAddress,
                DateTime = DateTime.Now
            });
            await _webHookDb.SaveChangesAsync();
            return new Ok(model);
        }
        return BadRequest(ModelState); //Bad data?
    } catch (Exception ex) {
        return StatusCode(500, ex.Message); //Something wrong with my code?
    }
}

查看从网络挂钩中的响应返回的消息,以获取有关请求失败原因的详细信息。

如果 HTTP 状态代码为 500,则说明数据的保存方式有问题。

如果 HTTP 状态代码为 400,则说明数据的发送方式有问题。