Как настроить автоматический запуск эмулятора CosmosDB при запуске / перезагрузке машины - PullRequest
0 голосов
/ 02 мая 2018

Мы пытаемся использовать эмулятор хранилища Azure и эмулятор Azure CosmosDB для нашей локальной разработки, а также для модульного тестирования в рамках сборок CI / CD. Вот основная ссылка с деталями этих эмуляторов: https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator

В рамках этих усилий нам нужен способ запустить и остановить оба эмулятора. Мы попытались запустить Docker, но у него есть свои проблемы из-за антивирусных вмешательств и т. Д., Поэтому я не хочу говорить об этом варианте в этом посте.

Это наше главное требование - запускать эмуляторы во время перезагрузки / запуска машины. Мы смогли заставить это работать в случае с эмулятором хранилища Azure, просто вызвав соответствующую команду для запуска эмулятора через планировщик задач Windows, это было очень просто. Таким образом, мы попробовали тот же подход с эмулятором CosmosDB, но он просто завершается ошибкой «Catastrophic fail (0x8000FFFF)» без особых подробностей для устранения проблемы. Это на компьютере с Windows Server 2016 Standard, но на моем компьютере с Windows 10 Enterprise я получаю тот же результат.

С тех пор я попробовал несколько других вариантов, как показано ниже:

  1. Создайте командный файл с помощью приведенной ниже команды и запустите его через планировщик задач: start / d "C: \ Program Files \ Эмулятор базы данных Azure Cosmos DB" CosmosDB.Emulator.exe

Это работает, когда я запускаю командный файл вручную, но не через планировщик задач.

  1. Тот же подход с использованием PowerShell и те же результаты, что и выше.

  2. Наконец, я создал службу Windows с использованием Topshelf, которая снова работает при запуске с использованием Visual Studio или отладке кода, но не при установке службы и ее запуске в консоли служб.

Мы пробовали использовать разные учетные записи, в том числе с правами администратора. Я упустил добавить ниже детали в моем оригинальном сообщении:

Эмулятор CosmosDB запускается, если он запускается вручную мной или членами моей команды, но когда он вызывается планировщиком задач, в системный журнал записывается следующая ошибка

Настройки разрешений для конкретного приложения не предоставляют разрешения локальной активации для приложения COM-сервера с CLSID {D63B10C5-BB46-4990-A94F-XXXXXXXXXXXX} и APPID {9CA88EE3-ACB7-47C8-AFC4-XXXXXXXXXXXX} SID пользователя {Damain} {UserName} (S-1-5-21-174494438-4207865126-xxxxxxxxx-xxxxx) с адреса LocalHost (с помощью LRPC), работающего в контейнере приложения. Недоступный SID (недоступен). Это разрешение безопасности можно изменить с помощью инструмента администрирования служб компонентов.

Есть ли другой способ заставить это работать?

1 Ответ

0 голосов
/ 03 мая 2018

Размещение ответа от Дэвида Нобла ниже, чтобы другие могли его использовать:

Выпуск GitHub # 7990

Пожалуйста, позвольте мне представиться. Я разработчик Cosmos DB Emulator. Спасибо за письмо.

Чтобы запустить эмулятор через планировщик задач, попробуйте использовать параметр командной строки: / noui. Также убедитесь, что задача выполняется с наивысшими привилегиями под учетной записью, входящей в группу администраторов.

Я определил такую ​​задачу только сейчас, которая запускается, когда я захожу в свой Windows 10 dev box. Он запускает эту командную строку под моей учетной записью домена, которая принадлежит к локальной группе администраторов: "C: \ Program Files \ Эмулятор БД Azure Cosmos \ CosmosDB.Emulator.exe" / noui

Я подтвердил, что когда я выполнил это задание:

• Без параметра / noui я увидел ошибку, которую вы увидели: E_UNEXPECTED (0x8000FFFF), катастрофический сбой.

• При использовании параметра / noui эмулятор запускался правильно (без значка на панели задач и без открытия обозревателя данных, как ожидалось), и я мог использовать обозреватель данных для создания документов.

Пожалуйста, попробуйте и дайте нам знать, как это происходит. Я здесь, чтобы помочь, если понадобится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...