BrokeredMessage Deseralization带有不需要的String

jos*_*hua 2 c# azure-worker-roles azureservicebus brokeredmessage

通过ServiceBus任何自定义传递代理消息DataContractSerializer[as Default XML Serializer Take Place].

var message = new BrokeredMessage(objMess.MessageBody);
Run Code Online (Sandbox Code Playgroud)

注意: 主要是邮件正文是HTML电子邮件的类型.

但是当在传递给worker角色的消息之后deserialization,我看到一些随机文本被附加在顶部正文中,

var reader = new StreamReader(receivedMessage.GetBody<Stream>());

@string3http://schemas.microsoft.com/2003/10/Serialization/?  .
Rest of Message Body 
Run Code Online (Sandbox Code Playgroud)

我试着给定制DataContractSerializer.但这搞砸了HTML符号.

一些格式化我找到的服务总线消息文章的内容,但仍然找到摆脱模式字符串的方法.

现在我正在substring使用消息体.

kro*_*lth 6

好像你有不匹配的发送者和接收者类型.应该像这样使用ServiceBus BrokeredMessages:

1)如果你发送, var message = new BrokeredMessage(object) 你应该收到receivedMessage.GetBody<typeof(object)>()

2)如果你发送 var message = new BrokeredMessage(object, XmlObjectSerializer>- >你应该收到 receivedMessage.GetBody<typeof(object)>(XmlObjectSerializer)

3)如果你发送, var message = new BrokeredMessage(Stream) 你应该收到 receivedMessage.GetBody<Stream>

这对你来说应该是透明的.只需将您发送的类型放入Receiver即可. receivedMessage.GetBody<String>()如果它是一个字符串或receivedMessage.GetBody<TypeOfMessageBody>()

  • 是的,这解释了您的发送者和接收者使用相同库的舒适情况。接收者是 REST 的情况(比如我们的)呢?想知道是否有办法防止前缀。每次解析 JSON 之前,我们都必须嗅探并删除它。 (3认同)