2017-07-13 10 views
0

サービスバスキューにメッセージを送信しようとしています。そのために私は私のProgram.csの中のコードの下の行上記のコードでServiceBus Queue - 本体ストリームが部分的に消費されたため、メッセージのシリアル化に失敗しました

try 
     { 
      var connectionString = "Endpoint=sb://Xx-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXx"; 
      var queueName = "queue"; 
      for (int i = 0; i < 10; i++) 
      { 
       //Send messages to the queue 
       var client = QueueClient.CreateFromConnectionString(connectionString, queueName); 
       var message = new BrokeredMessage("This is a test message!"); 

       client.Send(message); 

       Console.WriteLine("Message successfully sent! Press ENTER to exit program"); 
      } 
     }catch(Exception ex) 
     { 
      Console.WriteLine(ex.ToString()); 
     } 
     Console.ReadLine(); 

私が正常にメッセージを送った最初の繰り返しのために、私は上記のコードを実行バスqueue.Whileにサービスを提供するためにXMLデータを送信していますを書きますキューが、2回目の反復のために、そして私のデバッグポイントがClient.Send(メッセージを)当たったとき、私は次のエラーを取得しています:

Failed to serialize the message because its body stream has been partially consumed. at Microsoft.ServiceBus.Messaging.BrokeredMessage.SerializeBodyStream(BrokeredMessage message, XmlWriter writer) at Microsoft.ServiceBus.Messaging.BrokeredMessage.System.Xml.Serialization.IXmlSerializable.WriteXml(XmlWriter writer) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteIXmlSerializable(XmlWriterDelegator xmlWriter, Object obj, XmlSerializableWriter xmlSerializableWriter) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteIXmlSerializable(XmlWriterDelegator xmlWriter, Object obj) at System.Runtime.Serialization.XmlDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) at WritemessagesToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , CollectionDataContract) at System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context)

あなたはどのように、できるだけ早く上記のエラーを解決する方法を教えていただけますか?

答えて

0

メッセージの送信にはを呼び出すことはできません。私は最初の反復中になぜ失敗しないのか正確にはわかりませんが、全体としてGetBodyは受信メッセージに対してのみ呼び出されるべきです(そして一度だけ)。

+0

ありがとう@Mikhail、最初の繰り返しのために、メッセージを正常にキューに送信しました。しかし、2回目以降は私の質問で上記のエラーが出てくる。 – pradeep

+0

@pradeep 'GetBody'なしで更新されたコードを実行している間は問題はありません。 – Mikhail

+0

これはGetBodyを削除して動作します。 – pradeep

関連する問題