Я отправляю сообщения в ASB с помощью WCF NetMessaging.Сообщение может содержать любое количество пользовательских контрактов данных.
У меня есть служба без учета состояния Service Fabric с настраиваемым прослушивателем для ASB, доставляющего сообщения, помещенные в очередь.Все примеры, которые я видел, способны обрабатывать только один тип сообщения (кажется, что большинство рекомендаций - сериализация в JSON, но это не то, что мне нужно здесь делать).Я хочу, чтобы подписчик в очереди мог обрабатывать несколько сообщений (любое сообщение, отправленное на любое действие службы).
Я могу добавить действие в BrokeredMessage.Properties, чтобы я знал, гдеОтправь это.Проблема в том, что я не выяснил, как десериализовать тело сообщения любым способом, который работает.
Я могу прочитать его из потока и передать в строку, но не могу этого сделать: var myDTO =message.GetBody ();Это бросает исключения сериализации.Я также попробовал вариант такой передачи в DataContractSerializer - хотя я думаю, что это значение по умолчанию.
Кроме того, мне действительно нужен способ сделать это, не зная тип данных в теле- Я мог бы, конечно, добавить больше сообщений. Свойства для типов, сериализованных в теле, но я полагаю, что должен быть прямой способ сделать это, используя только данные в теле - после того, как все WCF и подобные техники делают это с легкостью.Но как?
Спасибо за любую помощь, Уилл