Отправить строго типизированный сервисный автобус BrokeredMessage - PullRequest
0 голосов
/ 07 сентября 2018

Как видно из заголовка, я пытаюсь отправить сообщение строго типизированного посредника в очередь служебной шины. Я могу заставить отправленную часть работать, но при получении я получаю следующую ошибку:

Expecting element 'LogEntry' from namespace 'http://schemas.datacontract.org/2004/07/Admiral.Components.Instrumentation.Logging'.. Encountered 'Element'  with name 'string', namespace 'http://schemas.microsoft.com/2003/10/Serialization/'. 

Я делаю отправку следующим образом:

            LogEntry errorEvent = new Admiral.Components.Instrumentation.Logging.LogEntry
            {
                MachineName = Environment.MachineName,
                AppDomainName = entry.Source,
                Message = entry.Message                    
            };

            var message = JsonConvert.SerializeObject(errorEvent);
            queueClient.Send(brokeredMessage);

А на приемной стороне я делаю:

errorMessage.GetBody<AdmiralLogging.LogEntry>();

Контракт, который вы видите, находится вне моего контроля, поэтому добавить атрибут DataContract невозможно (я читал, что это одно из решений).

Из того исключения, которое я получаю, похоже, что отправляемое сообщение не набирается правильно, что имеет смысл, но я понятия не имею, как отправить напечатанное сообщение.

Отправленное сообщение выглядит так:

{"Message":"This is a message","MachineName":"DESKTOP-1L22TCS","AppDomainName":"CompareNow Lookup Service"}
...