У меня возникают проблемы с получением библиотеки Microsoft.Azure.Documents для инициализации клиента в рабочей роли Azure. Я использую предварительную версию пакета Nuget 0.9.1.
Я воспроизвел то, что было сделано в пример для лазурного документа
При локальном запуске через эмулятор я могу нормально подключиться к documentdb, и он работает, как и ожидалось. При работе в рабочей роли я получаю серию NullReferenceException, а затем ArgumentNullException.
Нижнее исключение System.NullReferenceException, выделенное выше, имеет этот стек вызовов
поэтому исключения nullReferenceException начинаются в этом вызове с нового DocumentClient.
var endpoint = "myendpoint";
var authKey = "myauthkey";
var enpointUri = new Uri(endpoint);
DocumentClient client = new DocumentClient(endpointUri, authKey);
Ничто не меняется между запуском его локально и рабочей ролью, кроме среды (очевидно).
Кто-нибудь заставил DocumentDb работать с рабочей ролью или у кого-нибудь есть идеи, почему он будет генерировать исключения с нулевой ссылкой? Параметры, передаваемые в DocumentClient(), заполняются.
ОБНОВЛЕНИЕ: я попытался переписать его, сделав его более общим, что помогло, по крайней мере, разрешить запуск рабочей роли и подключить отладчик. Он выдает ошибку в новом DocumentClient. Похоже, что некоторая передача безопасности является нулевой. Оба обязательных параметра при инициализации не равны нулю. Есть ли параметр безопасности, который мне нужно изменить, чтобы моя рабочая роль могла подключаться к моей базе данных документов? (до сих пор работает локально нормально)
ОБНОВЛЕНИЕ 2: я могу запустить экземпляр в режиме выпуска, но не в режиме отладки. Значит, это должно быть как-то связано с неправильно настроенными настройками безопасности или хранилища?
Кажется, я получаю System.Security.SecurityExceptions - только при использовании DocumentDb - очереди не дают мне эту ошибку. Все стеки вызовов для этой ошибки, по-видимому, связаны с System.Diagnostics.EventLog. Самое первое исключение, которое я вижу в сводке Intellitrace, — это System.Threading.WaitHandleCannotBeOpenedException.
Подробнее Сводные данные об исключениях Intellitrace:
top — самый ранний, а нижний — самый последний (поэтому сначала происходит System.Security.SecurityException, а затем NullReference)