如何将WCF响应发送到Azure队列

时间:2017-08-30 06:24:06

标签: .net wcf azure azure-queues

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

1 个答案:

答案 0 :(得分:0)

我建议你在服务方法中添加一个额外的参数。您可以从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;
}