我想设置一个端点来测试来自第三方的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我用它作为表单数据发布,所以一些中间件正在读取正文,它在我的代码中最终为null。有没有办法禁用模型处理,以便我可以到达请求体?
答案 0 :(得分:0)
您实际上可以使用模型绑定来优势,并使用FromBody
属性跳过所有流读取。试试这个:
[Route("{*path}")]
[HttpPost]
public ActionResult Any(string path, [FromBody] string apiBody)