2015-08-03 3 views
4

Я делаю небольшое приложение, которое должно отображать количество элементов в моих очередях Azure. Когда я использую FetchAttributesAsync и ApproximateMessageCount в приложении консоли, я получаю ожидаемый результат в ApproximateMessageCount после вызова FetchAttributesAsync (или FetchAttributes).ApproximateMessageCount всегда null после вызова FetchAttributesAsync в приложении Universal Windows

Когда я использую то же самое в приложении Universal Windows, ApproximateMessageCount остается застрявшим в null после вызова FetchAttributesAsync (FetchAttributes там недоступен).

код консоли:

 CloudStorageAccount _account; 

     if (CloudStorageAccount.TryParse(_connectionstring, out _account)) 
     { 
      var queueClient = _account.CreateCloudQueueClient(); 

      Console.WriteLine(" {0}", _account.QueueEndpoint); 
      Console.WriteLine(" ----------------------------------------------"); 

      var queues = (await queueClient.ListQueuesSegmentedAsync(null)).Results; 

      foreach (CloudQueue q in queues) 
      { 
       await q.FetchAttributesAsync(); 
       Console.WriteLine($" {q.Name,-40} {q.ApproximateMessageCount,5}"); 
      } 
     } 

Универсальный App код:

 IEnumerable<CloudQueue> queues; 
     CloudStorageAccount _account; 
     CloudQueueClient queueClient; 

     CloudStorageAccount.TryParse(connectionstring, out _account); 
     queueClient = _account.CreateCloudQueueClient(); 

     queues = (await queueClient.ListQueuesSegmentedAsync(null)).Results; 

     foreach (CloudQueue q in queues) 
     { 
      await q.FetchAttributesAsync(); 

      var count = q.ApproximateMessageCount; 

      // count is always null here!!! 
     } 

Я пробовал все виды альтернатив, как Wait() 's и такие на awaitables. Что бы я ни стараюсь, то ApproximateMessageCount остается в null с dertermination :-(.

ли я что-то отсутствует?

ответ

1

Я думаю, что вы обнаружили ошибку в клиентской библиотеке для хранения. Я посмотрел код на Github и по существу вместо того, чтобы читать значение Approximate Message Count заголовка, код считывает значение Lease Status заголовка

В QueueHttpResponseParsers.cs классе:.

public static string GetApproximateMessageCount(HttpResponseMessage response) 
    { 
     return response.Headers.GetHeaderSingleValueOrDefault(Constants.HeaderConstants.LeaseStatus); 
    } 

Этот метод должен быть:

public static string GetApproximateMessageCount(HttpResponseMessage response) 
    { 
     return response.Headers.GetHeaderSingleValueOrDefault(Constants.HeaderConstants.ApproximateMessagesCount); 
    } 

Я отправил сообщение об ошибке для этого: https://github.com/Azure/azure-storage-net/issues/155.

+0

Ничего себе, спасибо за проверку этого ... –