gpt4 book ai didi

c# - Web API 2 POST 请求返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:04 26 4
gpt4 key购买 nike

问题是,当进入方法时,“session”为空。如您所见, header 和​​ JSON 对象是正确的。你能告诉我我做错了什么吗?

我的带 Angular 的 POST 请求:

        $scope.send = function () {
var data = { "session": session };
var req = {
method: 'POST',
data: data,
headers: {'Content-Type': 'application/json'},
url: '/api/myquiz/answers/'
}

$http(req).success(
function () {
quiz();
});
}

和C#代码:

    [Route("answers")]
[HttpPost]
public IActionResult AnswerPost([FromBody] string session) {

...

}

Chrome 控制台:

Request URL:http://localhost:39634/api/myquiz/answers/
Request Headers
Provisional headers are shown
Accept:application/json, text/plain, */*
Content-Type:application/json
Origin:http://localhost:39634
Referer:http://localhost:39634/Team/Index
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36
Request Payload
{session: "92dfb7e432224702a553c98c294b29cf"}
session: "92dfb7e432224702a553c98c294b29cf"

最佳答案

您正在向 WebApi 发布一个对象:

var data = { "session": session };

这就是说您正在传递一个具有 session 属性的对象。你告诉你的 WebApi 方法期望的是一个字符串:

public IActionResult AnswerPost([FromBody] string session)

不是一个对象。我认为如果您将代码更改为:

$scope.send = function () {
//var data = { "session": session };
var req = {
method: 'POST',
data: session,
headers: {'Content-Type': 'application/json'},
url: '/api/myquiz/answers/'
}

$http(req).success(
function () {
quiz();
});
}

它应该可以工作。希望这可以帮助。不过,如果您将来要将更多参数传递给该函数,我会创建一个 C# 对象以传递给 Controller ​​。像这样:

public class AnswerPost
{
public string Session {get; set;}
}

然后将 Controller 方法更新为如下所示:

[Route("answers")]
[HttpPost]
public IActionResult AnswerPost([FromBody] AnswerPost answerpost) {
...
}

关于c# - Web API 2 POST 请求返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30574427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com