2017-08-30 85 views
0

我最近开始使用Azure服务总线。我能够使用我的控制台应用程序从队列发送和接收消息,并能够在控制台应用程序中使用一个WCF服务,然后将响应发送到天青队列。但我有一些不同的场景。我不想创建任何控制台应用程序,因为我想使用SOAPUI发送响应(对azure队列)。我将在IIS上托管服务,并通过SoapUI请求,我应该在我的队列中得到响应。请为此提出一些解决方案。任何帮助将不胜感激。如何将WCF响应发送到Azure队列

+0

您的意思是说,调用服务会导致队列中的消息,或者服务的使用者是否应将结果放入队列中?如果最后一个是你正在寻找的那个,你将不得不创建一个连接到服务总线的客户端。 –

回答

0

我建议你在service方法中增加一个额外的参数。您可以从SoapUI传递'true'以将结果保存到存储队列中。以下代码供您参考。

public CompositeType GetDataUsingDataContract(CompositeType requestData, bool saveResultToQueue = false) 
{ 
    //Process the request data and get the result 
    CompositeType result = GetResult(requestData); 
    if (saveResultToQueue) 
    { 
     //Serialize the result to a string 
     XmlSerializer serializer = new XmlSerializer(typeof(CompositeType)); 
     MemoryStream ms = new MemoryStream(); 
     serializer.Serialize(ms, result); 

     string serilizedResult = string.Empty; 

     using (StreamReader sr = new StreamReader(ms)) 
     { 
      serilizedResult = sr.ReadToEnd(); 
     } 

     //Add a new message to the queue 
     CloudStorageAccount storageAccount = CloudStorageAccount.Parse("StorageConnectionString"); 
     CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); 
     CloudQueue queue = queueClient.GetQueueReference("myqueue"); 
     queue.CreateIfNotExists(); 
     CloudQueueMessage message = new CloudQueueMessage(serilizedResult); 
     queue.AddMessage(message); 
    } 
    return result; 
} 
相关问题