Windows azure development storage blob service не запускается
Когда я запускаю эмулятор хранилища разработки, я получаю сообщение об ошибке
The process cannot access the file because it is being used by another process
Я предполагаю, что это происходит только для BLOB, другие службы, т.е. очередь и таблицы запускаются успешно
В чем может быть проблема? Я использую Azure SDK v1.4
![Development Storage Emulator start error]()
Ответы
Ответ 1
Остановить BitTorrent. По моему опыту, эта ошибка обычно является конфликтом портов, а BitTorrent обычно захватывает порт 10000. Если это не BitTorrent, ищите другие приложения, которые могут держаться на порт 10000. Netstat, вероятно, может помочь.
Ответ 2
Это может быть другой процесс с использованием порта, используемого хранилищем Azure dev.
Чтобы выяснить, какое приложение это, выполните сначала netstat
:
netstat -p tcp -ano | findstr :10000
В последнем столбце вы получите идентификатор процесса (PID):
TCP 0.0.0.0:10000 0.0.0.0:0 LISTENING 2204
Это означает, что процесс, прослушивающий этот порт, равен ID 2204. Затем запустите taklist
:
tasklist /fi "pid eq 2204"
Итак, вы увидите что-то вроде этого:
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
SMSvcHost.exe 2204 Services 0 29 300 K
Итак, теперь вы знаете, что SMSvcHost.exe
прослушивает этот порт.
Если вы не можете остановить процесс с помощью порта, есть способ переназначить порты, используемые DevFabric. Решение взято из этого сообщения в блоге:
Вы можете сделать это, перейдя на C:\Program Files\Windows Azure SDK\v1.4\bin\devstore (замените 1.4 версией SDK) и откройте DSService.exe.config. Оттуда вы можете изменить конфигурацию и заставить ваши службы слушать другие порты.
Для меня в v1.6 путь был C:\Program Files\Windows Azure Emulator\emulator\devstore\DSService.exe.config
Для SDK v2.5/Storage v3.4 путь %ProgramFiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\WAStorageEmulator.exe.config
Для Emulator v4 + путь %ProgramFiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config
Но будьте осторожны, потому что вы больше не сможете использовать UseDevelopmentStorage=true
в своей строке подключения (например, подключиться к Azure Storage Explorer).
Чтобы подключиться, используйте настраиваемую строку подключения, которая предназначена для новых портов конечной точки, которые вы определили. Вы по-прежнему хотите подключиться с помощью стандартного значка известного имени и ключа учетной записи эмулятора хранилища. Пример строки подключения может быть найден здесь.
Ответ 3
У меня была такая же проблема, но в моем случае проблема была где-то еще. Была система Process (PID 4), прослушивающая порт 10 000, поэтому очевидно, что я не смог убить такой процесс. Единственным обходным решением было перезагрузить Windows (64-разрядная версия Windows 7), но это слишком экстремально и трудоемко.
Наиболее сложной задачей было определить, почему системный процесс прослушивает этот порт. В этом случае Google не помог.
Поэтому я просто попытался подключиться к порту 10 000 на локальном хостинге с помощью Netcat (лучше Telnet) и отправить туда что-то:
$ nc 127.0.0.1 10000
Я быстро заметил из ответа, что HTTP-сервер прослушивает порт 10 000. Наиболее важной информацией в ответе был этот заголовок:
Server: Microsoft-HTTPAPI/2.0
Тогда было действительно быстро освободить этот порт для Azure Emulator. Краткая информация о том, что это на самом деле делает:
HTTP Server API, и самое главное, кто это делает: Windows HTTP Services.
Затем я перешел в консоль управления службами, нашел службу под названием Service WinHTTP WPAD, которая была запущена, и просто остановила ее. И вуаля, порт 10 000 теперь свободен как птица.
Кто-нибудь знает, как это работает? Я предполагаю, что какое-то третье приложение создает HTTP-сервер прослушивания на порту 10000, используя службу WPAD WinHTTP. Я сомневаюсь, что это ничего от Microsoft, поскольку они не будут настраивать Azure Emulator на использование уже используемого ими порта.
Ответ 4
В моем случае в моей системе не было бит Torrent. Однако порт 1000 использовался некоторым java.exe. Я понял, что запуск HDInsight локально не работает с хранилищем памяти Azure. Поэтому я отправился в интерфейс Azure Storage Emulater и снял флажок. После этого этот вопрос был разрешен.