【发布时间】:2020-07-17 20:34:16
【问题描述】:
我正在制作 .Net Core 3.1 API,但响应不可靠。大多数时候它们是空白的,并且偶尔会按预期工作。我正在使用 NewtonsoftJson 并添加了 .AddNewtonsoftJson();到 Startup.cs 中的适当位置。没有例外,每个都有一个 Ok 的响应。
这是动作的完整代码。
[HttpPost("/lobby/new")]
public IActionResult NewLobby([FromQuery] string name)
{
string playerGUID = Guid.NewGuid().ToString();
var lobby = new Models.Lobby
{
LobbyMembers = new List<Models.Lobby.LobbyMember>
{
new Models.Lobby.LobbyMember
{
PlayerID = playerGUID,
Name = name
}
},
HostID = playerGUID,
State = Models.Lobby.LobbyState.Open
};
_lobbies.InsertOne(lobby);
var response = new Models.JsonOut.LobbyInfo
{
LobbyID = lobby.MongoID,
PlayerID = playerGUID
};
return Json(response);
}
以下是预期的工作体结果示例:
{"playerID":"7183f34b-3524-45d0-a760-bcf62b1f4313","lobbyID":"5e8ae31b844735202ceb62c3"}
意外结果是响应正文中的 Json 为 0B。
奇怪的是,它偶尔会起作用,而不是根本不起作用。这是我的 Firefox 开发者工具的网络标签。突出显示是正确的。
更新:我做了一个 mcve,但问题仍然存在。我使用 .NET Core 3.1 创建了一个 ASP.NET WebApi 项目并禁用了 HTTPS 配置。
public class TestController : Controller
{
[HttpPost("/lobby/new")]
public IActionResult NewLobby([FromQuery] string name)
{
string playerGUID = Guid.NewGuid().ToString();
var response = new Models.JsonOut.LobbyInfo
{
LobbyID = "test",
PlayerID = playerGUID
};
return Json(response);
}
}
我还将附加要返回的类。
public class LobbyInfo
{
[JsonProperty("playerID")]
public string PlayerID { get; set; }
[JsonProperty("lobbyID")]
public string LobbyID { get; set; }
}
【问题讨论】:
-
您的代码似乎没问题。可以发mcve吗?
-
您所说的“仅偶尔工作”是什么意思?它在做什么,你在期待什么?
-
@Dmitry 我很快就会这样做。
-
@JonathanAlfaro 有时我会得到预期的结果,体内有一些 Json,但大多是空的 Json 内容
-
你还没有解释你期望得到什么......请发布两个 Json 回复,以便我们看到你所看到的。还有什么是_lobbiers.InsertOne??
标签: c# asp.net json .net-core asp.net-core-webapi