Это моя первая попытка создания функции приложения Azure. У меня это работает при работе на моей локальной машине разработчика. Теперь я развернул его в Azure и прикрепил к нему отладчик (очень круто, кстати!).
При работе на моем локальном хосте я могу использовать файл local.settngs.json
для всех настроек приложения. Это отлично работает. Но мне кажется, что я сталкиваюсь с препятствиями в простом процессе доступа к настройкам приложения при удаленном запуске функции в Azure.
Сначала (а это битва, с которой я буду сражаться позже). Я уверен, что есть способ автоматического заполнения настроек в функции Azure в зависимости от того, что находится в local.settngs.json
, но сейчас я добавил их все вручную ,
А сейчас давайте просто посмотрим на параметр StorageConnectionString
, значение которого выглядит следующим образом:
DefaultEndpointsProtocol=https; AccountName=[redacted]; AccountKey=[redacted]; EndpointSuffix=core.windows.net
Все три из этих попыток получить значение работают на моем локальном хосте, но все три также терпят неудачу при отладке в удаленной функции Azure:
string storageConString = ConfigurationManager.AppSettings["StorageConnectionString"];
string storageConString = CloudConfigurationManager.GetSetting("StorageConnectionString");
string storageConString = Environment.GetEnvironmentVariable("StorageConnectionString");
Во всех случаях я получаю эту ошибку:
Сообщение об ошибке:
Значение не может быть нулевым. Имя параметра: itemName
Трассировка стека:
в Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility.AssertNotNullOrEmpty (String paramName, String value) в c: \ Program Files (x86) \ Jenkins \ workspace \ release_dotnet_master \ Lib \ Common \ Core \ Util \ CommonUtility. cs: строка 143 в Microsoft.WindowsAzure.Storage.File.CloudFileDirectory.GetDirectoryReference (String itemName) в каталоге c: \ Program Files (x86) \ Jenkins \ workspace \ release_dotnet_master \ Lib \ Common \ File \ CloudFileDirectory.Common.cs: строка 224 в XXXXXXX.Common.AzureFunctions.ProcessInbound.DoBooksExist (BookSource bookSource) в XXXXXXX.Common.AzureFunctions.ProcessInbound.Run (TimerInfo myTimer, журнал TraceWriter)
Из-за этой ошибки я как бы озадачен, так как кажется, что она даже не применима. Почему, например, он звонит GetDirectoryReference(String itemName)
?