tentrun
@tentrun
Clown c# inside

Почему не парсится JSON в Docker-контейнере?

Столкнулся с такой проблемой.
Из-под локальной машины все работает, но, при деплое в прод этот код не отрабатывает
Код

var responseDto = await response.Content.ReadFromJsonAsync<TResponseDto>(SerializerOptions.JsonOptions, cancellationToken);
        response.Content.ReadAsStringAsync(cancellationToken).GetAwaiter().GetResult();
        return responseDto!;


Не совсем представляю, что выложить из кода сюда.
В общем был написан тест этого участка кода, т. к. думали может Unix ругается на регистр, он проходит, но, в проде валится, на локальной машине с таким же окружением все работает.
Никаких исключений не выбрасывает, нашли единственную лишь зацепку из логгера
Лог
Selected output formatter 'Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter' and content type 'application/json' to write the response.
14 Aug 2023 12:22:51.395
Attempting to select the first output formatter in the output formatters list which supports a content type from the explicitly specified content types '['application/json']'.
14 Aug 2023 12:22:51.395
No information found on request to perform content negotiation.
14 Aug 2023 12:22:51.395
List of registered output formatters, in the following order: ['Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter', 'Microsoft.AspNetCore…

И проблема в том, что на одной прод машине все работает (тоже debian стоит), а на второй нет и никаких ошибок, все молчит

Есть такой фильтр и здесь показывает, что как раз Attachments который приходит с JSON пуст, хотя сам JSON можно вытащить.
Код фильтра
var resultDocs = response.Result.Item
    .Where(x => x.Attachments.Any(a => a.Type is AttachmentType.Deal or AttachmentType.Lead))
    .ToArray();


Опции сериализатор
Encoder = JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.Cyrillic),
        WriteIndented = true,
        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
        PropertyNameCaseInsensitive = true


В общем проблема, что проблема проявлятся лишь на одной прод-машине, в чем может быть проблема? Куда копать?
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
1) Может у вас прокси стоит, который заголовки удаляет?

Логи говорят, что невозможно выполнить согласование контента (content negotiation).

2) Попробуйте вручную зарегистировать Json форматтер для запросов первым с списке.

В списке первым стоит `Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter`. Не работал с ним, но название говорит, что это какой-то Fallback класс, который просто скипает запрос
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы