我想设置一个端点来测试来自第三方的 webhook。 他们的文件非常差,没有办法提前确切地告诉我会得到什么。 我所做的是设置一个 ApiController,它只会接受一个请求,并使用它们发送的内容向表中添加一行。 这让我至少可以验证他们正在调用 webhook,并查看数据,以便我可以对其进行编程。
// ANY api/webook/*
[Route("{*path}")]
public ActionResult Any(string path)
{
string method = Request.Method;
string name = "path";
string apiUrl = Request.Path;
string apiQuery = Request.QueryString.ToString();
string apiHeaders = JsonConvert.SerializeObject(Request.Headers);
string apiBody = null;
using (StreamReader reader = new StreamReader(Request.Body))
{
apiBody = reader.ReadToEnd();
}
Add(method, name, apiUrl, apiQuery, apiHeaders, apiBody);
return new JsonResult(new { }, JsonSettings.Default);
}
这很好用,除了这个新的 webhook 我 usign 它作为表单数据发布,所以一些中间件正在读取正文,它在我的代码中最终为空。 有没有办法禁用模型处理,以便我可以获取请求正文?
实际上,您可以使用模型绑定来发挥自己的优势,并使用 FromBody
属性跳过所有流读取。试试这个:
[Route("{*path}")]
[HttpPost]
public ActionResult Any(string path, [FromBody] string apiBody)