【发布时间】:2019-05-16 13:39:14
【问题描述】:
我正在开发一个实现命名处理程序方法的剃须刀页面。我将一些 JSON 编码数据发布到命名的处理程序方法。但是,我收到了 400 bad request response 作为响应。
到目前为止,我已经尝试过使用不同的 JSON 有效负载和不同的方法签名,但可惜没有任何效果。
这是我的方法的一个冷落:
[HttpPost]
public IActionResult OnPostContextFreeGrammarPartial() {
var grammarModel = new ContextFreeGrammarModel();
return new PartialViewResult() {
ViewName = "_ContextFreeGrammar",
ViewData = new ViewDataDictionary<ContextFreeGrammarModel>(ViewData, grammarModel)
};
}
这是一个示例请求:
我希望处理程序方法能够成功执行,但服务器或浏览器只是在方法开始执行之前抛出 400 响应。
我错过了什么?
【问题讨论】:
-
我正在将有效负载传递给 OnPostContextFreeGrammar,但我不知道 ASP.NET Core 方法是否可以在忽略有效负载的情况下执行。
grammarModel也不为空。 -
Razor 页面不打算像 API 那样处理 JSON 请求。您可能可以让它工作,但这需要不成比例的努力。当涉及到这样的事情时,你最好使用控制器。也就是说,如果我不得不猜测一下,我会说防伪验证已经生效,而且您似乎没有传递令牌。这将始终导致 400。请参阅:docs.microsoft.com/en-us/aspnet/core/security/…
-
感谢您的评论。这就是解决方案。我必须将防伪令牌添加到请求标头中。我将研究使用控制器而不是剃须刀页面。
标签: c# http asp.net-core