Я создаю консольное приложение в .Net Core, которое получает данные из Web API, обновляет эти данные и выполняет Put для обновления данных Web API. Я сталкиваюсь с проблемой, при которой я теряю свои данные в HttpRequestBuilder при отправке их в HttpContent, и веб-API не обновляется, но я возвращаю 200. Есть идеи, что я могу делать не так?
Контроллер:
public static async Task<HttpResponseMessage> UpdateTransaction(Transaction transaction)
{
var requestUri = $"{baseUri}transactions/{transaction.ID}";
return await HttpRequestFactory.Put(requestUri, transaction);
}
JsonContent:
public JsonContent(object value, string mediaType)
:base(JsonConvert.SerializeObject(value), Encoding.UTF8, mediaType)
{
}
HttpRequestFactory:
public static async Task<HttpResponseMessage> Put(string requestUri, object value)
{
var builder = new HttpRequestBuilder()
.AddMethod(HttpMethod.Put)
.AddRequestUri(requestUri)
.AddContent(new JsonContent(value, "application/json"));
return await builder.SendAsync();
}
HttpRequestBuilder:
public HttpRequestBuilder AddContent(HttpContent content)
{
this.content = content;
return this;
}
public async Task<HttpResponseMessage> SendAsync()
{
// Check required arguments
EnsureArguments();
// Setup request
var request = new HttpRequestMessage
{
Method = this.method,
RequestUri = new Uri(this.requestUri)
};
if (this.content != null)
request.Content = this.content;
request.Headers.Accept.Clear();
if (!string.IsNullOrEmpty(this.acceptHeader))
request.Headers.Accept.Add(
new MediaTypeWithQualityHeaderValue(this.acceptHeader));
// Setup client
var client = new HttpClient();
client.Timeout = this.timeout;
var response = await client.SendAsync(request);
return response;
}