【发布时间】:2012-01-03 15:09:55
【问题描述】:
我在序列化来自 Windows Azure ServiceBus 的消息时遇到问题。
当我调用“message.GetBody();”时方法它以某种循环结束,这使我的天蓝色模拟器分配机器上所有可用的内存。
我的代码:
Microsoft.ServiceBus.Messaging.BrokeredMessage message;
while (true)
{
// SB is an instance of a class which let me receive a BrokeredMessage through its ReceiveMessage method.
message = SB.ReceiveMessage("orders");
if (message == null)
{
break;
}
// This ends up allocating lots of memory until the debugger crashes.
Procurement.TestOrder torder = message.GetBody<Procurement.TestOrder>();
}
使用的类:
[MessageContract(IsWrapped=false)]
public class TestOrder
{
[MessageBodyMember]
public int companyId { get; set; }
}
我也尝试过在 TestOrder-Class 上使用 [DataContract] 和 [DataMember] 属性。
顺便说一句,消息是一个非常简单的 XML 文件,没有任何命名空间从 BizTalk 进入 azure 队列。
这可能存在一些小缺陷,但我看不出序列化程序陷入循环的任何原因。
提前致谢!
【问题讨论】:
-
当事情“陷入循环”时,通常是由于递归调用,例如,如果您没有正确访问 Property 成员..但是从这段代码中你有..很难判断发生了什么..
-
是的,我也这么认为!但是这段代码非常简单。我只是想序列化一个元素,我确定该元素存在于 xml 中,并且它只包含数字 1004。
标签: c# azure biztalk appfabric servicebus