反序列化从node.js发送的Azure ServiceBus队列消息时出错(azure sdk)

ctv*_*ctv 10 c# json node.js azure-worker-roles deserialization

这是我的情景:

我正在使用节点azure sdk从Node.js发送Azure ServiceBus队列消息,如下所示:

var message = {
    body: JSON.stringify({ foo: 'Bar' })
};

serviceBusService.sendQueueMessage('myQueue', message, function (error) {
    if (!error) {
        console.log('msessage sent');
    }
});
Run Code Online (Sandbox Code Playgroud)

我有一个正在侦听队列的ac #work角色:

QueueClient Client = QueueClient.CreateFromConnectionString(connStr, QueueName);

Client.OnMessage((receivedMessage) =>
{
    var body = receivedMessage.GetBody<string>();
});
Run Code Online (Sandbox Code Playgroud)

当该GetBody方法执行时,我收到以下错误:

反序列化System.String类型的对象时出错.输入源格式不正确

ctv*_*ctv 17

经过一番挖掘后,我发现这篇文章帮助我找到了解决方案:


Client.OnMessage((receivedMessage) =>
{
    var bodyJson = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
    var myMessage = JsonConvert.DeserializeObject<MyMessage>(bodyJson);
});
Run Code Online (Sandbox Code Playgroud)


如果有人遇到这个问题并找到了更好的解决方案,请告诉我!

谢谢!


Bac*_*ave 6

对于发现此问题的任何人,如果他们在使用 Service Bus Explorer 发送消息时遇到此错误(例如我)。

确保在下拉列表中指定正确的消息类型: 在此输入图像描述