ASP.NET Core Web API: сериализация Json в строкуC#

Место общения программистов C#
Ответить
Anonymous
 ASP.NET Core Web API: сериализация Json в строку

Сообщение Anonymous »

У меня есть веб-API ASP.NET Core, который я использую в качестве прокси-сервера для другого стороннего API. У меня есть несколько конечных точек, для которых у меня есть контроллер, но я также выступаю в качестве прокси для стороннего API для всех других отправляемых мне запросов, для которых у меня нет специальной конечной точки. По сути, я пересылаю эти запросы стороннему API.
У меня есть специальное промежуточное программное обеспечение для обработки входящих запросов. Если у меня есть собственная конечная точка для запроса, я вызываю _next.Invoke. Если я этого не сделаю, я перешлю запрос стороннему API.

Код: Выделить всё

    public async Task Invoke(HttpContext context)
{
if (IsCustomEnpoint(context))
{
await _next.Invoke(context);
}
else
{
await ForwardRequest(context);
}
return;
}
Когда я вызываю ForwardRequest, я использую HttpClient для отправки запроса и возврата некоторого JSON в виде строки, а также использую следующий метод для изменения HttpContext< /код>:

Код: Выделить всё

private static async Task ModifyResponse(HttpContext context, string json)
{
context.Response.ContentType = "application/json";
await context.Response.Body.WriteAsync(JsonSerializer.SerializeToUtf8Bytes(json));
}
При этом JSON будет заключен в дополнительные кавычки, поэтому исходный запрашивающий получит:

Код: Выделить всё

"{
"name": "Bob Boberty",
}"
Вместо

Код: Выделить всё

{
"name": "Bob Boberty",
}
Насколько я понимаю, это связано с тем, что веб-API берет на себя ответственность за сериализацию и сериализацию строки. Я знаю, как обойти это в коде на стороне клиента, сначала десериализовав строку, а затем десериализовав желаемый объект, но это похоже на обман.
Есть ли способ чтобы этого не произошло? Все примеры решения этой проблемы, которые я видел, не подходили для этого сценария.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -to-string
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»