Я бил головой об этом, чтобы воспользоваться. Любые идеи приветствуются!Msmq и sgen для полной ошибки xmlserialization
У меня есть приложение client/listener в vb.net с использованием MSMQ, и он работает на 100% отлично, когда я не использую sgen.exe для генерации сериализаций во время компиляции.
При использовании sgen он не работает на части слушателя.
qOrders.Formatter = New XmlMessageFormatter(New Type() {GetType(InfoMessage)})
m = qOrders.EndReceive(e.AsyncResult)
Это бомбы на м. m.Body имеет ошибку "Cannot deserialize the message passed as an argument. Cannot recognize the serialization format."
, а остальные свойства также имеют ошибки, не получающие значение.
Сборка прочная, и приложение App.XmlSerializers.dll также подписано правильно. Я знаю, что dll используется, потому что я не могу удалить его во время работы программы.
Класс InfoMessage - это простой публичный класс с 3 общедоступными членами строки. Проверяя dll с Reflector, я вижу, что sgen создал класс InfoMessageSerializer.
Проблема не на стороне клиента, потому что я удаляю dll и запускаю прослушиватель, он работает как обычно.
Итак, что может быть неправильным здесь? : О
Спасибо,
Джон
Edit: Ссылка на источник Слушатель: http://pastebin.com/TqWfLVJ0
Интересно! Один вопрос: оба документа обсуждают веб-службы - и я ничего не делаю с веб-службой, так как это применимо? Фактически, это просто гоночный PoC для связи MSMQ (уменьшенный от фактического приложения, чтобы выявить проблему). – johnjohn
@johnjohn - Ответ расширен. Кстати, если ваш вопрос содержит больше кода, особенно, кто и как создает экземпляр 'XmlSerializer', что сделало бы его лучшим вопросом. –
Спасибо за разъяснение. Я обновил ссылку на код Listener - он бомбит метод qOrders_ReceiveCompleted (который содержит код в вопросе). Он вообще не использует XmlAttributeOverrides. – johnjohn