Я полагаю, что я должен делать что-то явно неправильное в моем коде .NET, но не могу понять проблему.
У меня есть два приложения, которые общаются через вызовы RestSharp, и, независимо от того, что я пытаюсь сделать, значение POST, приходящее от одного приложения к другому, ВСЕГДА НЕДЕЙСТВИТЕЛЬНО. Вот мой код отправки:
var client = new RestClient(_context.CloudUrl + ":" + _context.CloudPort.ToString() + "/api/web/AddRegisteredLocation");
var request = new RestRequest(Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddHeader("cache-control", "no-cache");
request.AddParameter("application/json", JsonConvert.SerializeObject(myLocation, Formatting.None), ParameterType.RequestBody);
Я пытался .AddObject, .AddJsonBody, .AddBody - не использовать NewtonSoft.Json и даже передавать XML, но этот метод всегда получает значение NULL:
[Route("AddRegisteredLocation")]
[HttpPost()]
public async Task<IActionResult> AddRegisteredLocation([FromBody] string NewStringLocation)
{
try
{
RegisteredLocation newLocation = JsonConvert.DeserializeObject<RegisteredLocation>(NewStringLocation);
await _Manager.AddRegisteredLocation(newLocation);
return new OkObjectResult(true);
}
catch (Exception exc)
{
eventWriter.WriteEntry("AddRegisteredLocation failed with the exception: " + exc.ToString(), System.Diagnostics.EventLogEntryType.Error);
return new NotFoundResult();
}
Я также попробовал этот метод:
//POST: api/web/AddRegisteredLocation
[Route("AddRegisteredLocation")]
[HttpPost()]
public async Task<IActionResult> AddRegisteredLocation([FromBody] RegisteredLocation NewLocation)
{
try
{
await _Manager.AddRegisteredLocation(NewLocation);
return new OkObjectResult(true);
}
catch (Exception exc)
{
eventWriter.WriteEntry("AddRegisteredLocation failed with the exception: " + exc.ToString(), System.Diagnostics.EventLogEntryType.Error);
return new NotFoundResult();
}
}
И я удалил тег [FromBody] - ничего не работает. Когда я иду по коду, входящее значение ВСЕГДА равно NULL.
Если я использую скрипт Postman и отправляю в необработанном JSON через POST-запрос, это прекрасно работает, поэтому должно быть что-то на стороне запроса, но я не могу понять это.
У кого-нибудь есть предложение?