#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. некоторые службы не включены.
Посмотрите документ:
Комментарии:
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
.