Windows Azure - веб-роль не может получить доступ к хранилищу локальной очереди разработки - PullRequest
2 голосов
/ 04 сентября 2010

У меня есть библиотека классов, которая используется несколькими проектами ролей в моем решении.Два из этих проектов - это веб-роль и рабочая роль.

Каждый из них имеет одинаковый параметр конфигурации:

<Setting name="QueueConnectionString" value="UseDevelopmentStorage=true" />

каждый из них выполняет вызов этой функции:

public static void AddMessage(string Message)
    {
        var account = CloudStorageAccount.DevelopmentStorageAccount;
        ServicePoint queueServicePoint = ServicePointManager.FindServicePoint(account.QueueEndpoint);
        queueServicePoint.UseNagleAlgorithm = false;
        var client = account.CreateCloudQueueClient();
        var queue = client.GetQueueReference(DefaultRoleInstanceQueueName);
        queue.CreateIfNotExist();
        queue.AddMessage(new CloudQueueMessage(Message));
 }

Когда это выполняется в Рабочей роли, оно работает без каких-либо проблем;Я подтвердил правильное чтение и запись сообщений очереди.Когда он выполняется в веб-ролях, вызов queue.CreateifNotExist () завершается с ошибкой «Ответ недоступен в этом контексте».Я пытался найти информацию о том, что может быть причиной этого, но до сих пор мои поиски были бесплодными.Пожалуйста, дайте мне знать, если есть какая-либо дополнительная информация, которую я могу включить.

1 Ответ

6 голосов
/ 04 сентября 2010

хорошо, так что после гораздо большей работы я решил, что это потому, что я звонил из Global.asax Application_Start.

Я переместил это в свою функцию WebRole.cs OnStart (), и она работает правильно.

...