Я делаю. Net Core 3.1 API и получаю ненадежные ответы. Большую часть времени они пустые и очень редко работают, как ожидалось. Я использую Newtonsoft Json и добавил .AddNewtonsoft Json (); в соответствующие места в 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"}
Неожиданный результат равен 0B Json в теле ответа.
Странно, но иногда он работает, а не вообще. Вот моя сетевая вкладка Firefox инструментов разработчика. Выделены правильно. 
ОБНОВЛЕНИЕ: я сделал mcve, и проблема не устранена. Я создал ASP. NET проект WebApi с. NET Core 3.1 и отключил Configure for 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; }
}