HttpCook ie ValueCollection - сериализация - PullRequest
0 голосов
/ 06 мая 2020

Я беру часть работы для клиента, и у меня возникла проблема с сериализацией / десериализацией одной из моих клиентских моделей.

Вот немного контекста.

У моего клиента есть веб-сайт asp. net (смесь MVC + WebApi), и пользователи могут запрашивать создание документов. Текущий процесс включает в себя переход от веб-сайта к другому API (назовем его для простоты PDF api) для создания PDF. По разным причинам я хочу переместить этот запрос через механизм очередей. Большая часть этого уже существует, однако камень преткновения, который у меня есть в данный момент, заключается в том, что модель (запрос в формате pdf), передаваемая в Api, включает свойство типа HttpCook ie.

HTTP-запрос из Интернета в API PDF работает нормально, при этом объект запроса PDF, полученный Api, включает свойство HttpCook ie, и он полностью заполняется, включая HttpValueCollection (свойство Values) Тип HttpCook ie.

Однако, как часть моего перехода к использованию очереди сообщений, мне нужно сериализовать объект запроса PDF и десериализовать его по получении обработчиком очереди. Запрос PDF содержит свойство HttpCook ie, а HttpValueCollection этого cook ie не сериализуется, поэтому десериализация не выполняется со следующей ошибкой:

«Невозможно заполнить тип списка System.Web.HttpValueCollection».

Мне любопытно, почему конвейер запросов Http в. net поддерживает сериализацию / десериализацию HttpCook ie в моем параметре метода действия в API PDF, но явная сериализация / десериализация не работает.

Быстрое подтверждение. Идея передачи HttpCook ie для типа, переданного, используемого очередью сообщений, безумна. Однако я пытаюсь ограничить объем своих изменений, поэтому не хочу реорганизовывать код потребления (конечная точка pdf api), чтобы использовать модель без HttpCook ie, если я могу помочь (технический долг перед решу позже). Правильный ответ - не использовать везде HttpCook ie и не ссылаться на System.Web там, где он не принадлежит. Возможно, это будет мой следующий подход.

Мне бы хотелось подумать / объяснить, почему это работает в одном контексте, но не работает в другом (используя Json. net).

...