服务总线System.InvalidOperationException
问题描述:
我想使用datacontractjson序列化程序向azure服务总线发送消息。我经常收到以下错误消息服务总线System.InvalidOperationException
未处理的异常:System.InvalidOperationException:由于其正文流已被部分使用而无法序列化消息。
这里是我的代码
[DataContract]
class flow
{
[DataMember]
public string srcip {get; set;}
[DataMember]
public string dstip {get; set;}
}
主要代码:
class Program
{
static void Main(string[] args)
{
string connectionString = "XXXXXX";
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);
flow f = new flow()
{
srcip = "10.1.1.1",
dstip = "20.1.1.1"
};
//Sending a message
MessageSender testQueueSender = factory.CreateMessageSender("XXXXX");
MemoryStream stream1 = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(flow));
ser.WriteObject(stream1, f);
BrokeredMessage message = new BrokeredMessage(stream1);
testQueueSender.Send(message);
Console.WriteLine("Message(s) sent.");
Console.WriteLine("Done, press a key to continue...");
Console.ReadKey();
}
}
}
答
它看起来好像流位置并不总是试图发送邮件之前重置为0。如果你尝试这样,它应该可靠地发送:
MessageSender testQueueSender = factory.CreateMessageSender("testpath");
MemoryStream stream1 = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(flow));
ser.WriteObject(stream1, f);
stream1.Position = 0;
BrokeredMessage message = new BrokeredMessage(stream1);
testQueueSender.Send(message);
当通过ServiceBus Queue Messaging发送Stream时遇到类似问题,并在将Stream.Position设置为零时解决。谢谢。 – 2015-07-13 05:59:37