Функция Azure: не удалось запустить прослушиватель функции ‘Test’. Пожалуйста, убедитесь, что запущен эмулятор хранилища Azure

#azure-functions #azure-function-app #azure-storage-emulator

#azure-функции #azure-function-app #azure-storage-emulator

Вопрос:

Я получаю сообщение об ошибке ниже при попытке отладки функции Azure, которая запускается каждые 30 секунд и создает файл и загружает его в учетную запись хранилища Azure (используя эмулятор хранилища Azure для разработки).

Не удалось запустить прослушиватель функции ‘Test’. mscorlib: произошла одна или несколько ошибок. Майкрософт.Azure.WebJobs.Хост: Пожалуйста, убедитесь, что запущен эмулятор хранилища Azure. Майкрософт.WindowsAzure.Хранилище: удаленный сервер вернул ошибку: (500) Внутренняя ошибка сервера

Хотя эмулятор хранилища Azure запущен и запущен. Ниже приведен файл my local.settings.jason —

введите описание изображения здесь

Какие-либо указания, пожалуйста?

Ответ №1:

Поскольку вы используете локально виртуализированный эмулятор хранилища, ваша строка подключения верна.

Если ваш брандмауэр ограничивает доступ func к учетной записи хранилища, может появиться сообщение об этой ошибке. Брандмауэр является одной из причин, по которой прослушиватель не может получить доступ к эмулятору виртуального хранилища.

При локальном запуске функции все триггеры, кроме httptrigger, должны использовать эмулятор хранилища. Если брандмауэр ограничивает доступ прослушивателя к виртуальному хранилищу, при выполнении функций могут возникнуть проблемы.

Попробуйте отключить брандмауэр и посмотреть, решит ли это проблему.

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

 "%programfiles(x86)%Microsoft SDKsAzureStorage EmulatorAzureStorageEmulator.exe" status
 

в cmd для проверки состояния.

Если он возвращает false, введите следующую команду для запуска эмулятора хранилища:

 "%programfiles(x86)%Microsoft SDKsAzureStorage EmulatorAzureStorageEmulator.exe" init
"%programfiles(x86)%Microsoft SDKsAzureStorage EmulatorAzureStorageEmulator.exe" start
 

Подводя итог:

Этот тип проблемы обычно возникает по трем причинам.

1. Ошибка строки подключения не позволяет подключиться,

2. установлен брандмауэр

3. некоторые службы не включены.

Посмотрите документ:

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator#start-and-initialize-the-storage-emulator

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator#storage-emulator-command-line-tool-reference

Комментарии:

1. Да, я проверил с помощью упомянутой команды, что эмулятор запущен и запущен, брандмауэр выключен, и поскольку я использую эмулятор локального хранилища, поэтому, как вы сказали, строка подключения также выглядит правильно. Все еще сталкиваюсь с проблемой.

2. Когда вы говорите «некоторые службы не включены», о каких службах вы здесь говорите, не могли бы вы пояснить это, пожалуйста?

3. @user13624867 Какие инструменты вы используете для разработки функции Azure? Это Visual Studio?

4. @user13624867 Перезагрузите компьютер, а затем выполните следующие действия: Если вы используете язык, подобный java или C #, перейдите в скомпилированную папку и запустите «запуск func host». Если вы используете язык сценариев, такой как javascript или python. Просто запустите «func host start» в папке проекта. Посмотрите, есть ли еще эта проблема.

5. @user13624867 В редких случаях сообщалось об этой ошибке, поскольку инструмент был поврежден при установке связанных инструментов эмулятора хранилища с использованием VS. Поэтому, если вы используете Visual Studio для разработки, вам может потребоваться удалить и переустановить инструменты, связанные с эмулятором хранилища

Ответ №2:

Я бы прокомментировал только дополнительный сценарий; У меня была такая же проблема с моим эмулятором локального хранилища из-за того, что я ранее удалил localdb (следовательно, удалил базу данных эмулятора); затем я вручную создал базу данных emualtor в ssms, что привело к этой ошибке. Если вы находитесь в аналогичной ситуации, убедитесь, что вы удалили все связанные с эмулятором файлы mdf или ldf в корневой папке пользователя, а затем позвольте эмулятору создать требуемую базу данных ( AzureStorageEmulatorDb510 ), запустив AzureStorageEmulator.exe init .