Microsoft.WindowsAzure.Storage.StorageException: удаленный сервер возвратил ошибку: (403)
При новой публикации это первоначальная ошибка:
System.ApplicationException: слушатель трассировки AzureBlobTraceListener отключен. ---> System.InvalidOperationException: URL-адрес SAS для учетной записи облачного хранилища не указан. Используйте переменную окружения 'DIAGNOSTICS_AZUREBLOBCONTAINERSASURL', чтобы определить его. На Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceLi stener.RefreshConfig ()
Затем я добавил DIAGNOSTICS_AZUREBLOBCONTAINERSASURL
к настройкам приложения, значение которого установлено равным сгенерированному URL SAS службы Blob. При этом я получаю новую ошибку:
System.ApplicationException: слушатель трассировки AzureBlobTraceListener отключен. ---> System.ArgumentException: отсутствуют обязательные параметры для действительной подписи общего доступа в Microsoft.WindowsAzure.Storage.Core.Auth.SharedAccessSignatureHelper.ParseQuery (IDictionary
2 queryParameters, Boolean mandatorySignedResource) at Microsoft.WindowsAzure.Storage.Core.Util.NavigationHelper.ParseBlobQueryAndVerify(Uri address, StorageCredentials& parsedCredentials, Nullable
1 & parsedSnapshot) в Microsoft.WindowsAzure.Storage.Core.Util.NavigationHelper.ParseBlobQueryAndVerify(адрес StorageUri, StorageCredentials& parsedCredentials, Nullable`1& parsedSnapshot) в адресе хранилища Microsoft.WindowsAzures.ReaderSecurityBloader..WindowsAzure.Storage.Blob.CloudBlobContainer..ctor(StorageUri containerAddress, учетные данные StorageCredentials) в Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceListener.RefreshConfig()
Затем я добавил sr=b
кDIAGNOSTICS_AZUREBLOBCONTAINERSASURL
'что приводит к ошибке ниже:
Microsoft.WindowsAzure.Storage.StorageException: удаленный сервер возвратил ошибку: (403) Запрещено. ---> System.Net.WebException: удаленный сервер возвратил ошибку: (403) Запрещено. в System.Net.HttpWebRequest.GetResponse() в Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync [T] (RESTCommand
1 cmd, IRetryPolicy policy, OperationContext operationContext) --- End of inner exception stack trace --- at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand
1 cmd, политика IRetryPolicy, OperationContext operationContext) в Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.DownloadBlockList(BlockListingFilter blockListingFilter, параметры доступа к доступному условию, BlobRequestOptions, операция OperationContext at Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceListener.ConsumeBuffer() Информация о запросе RequestID:5225782d-0001-0175-6d94-fc82dd000000 RequestDate: Пт, 14 июля 2017 11:33:16 GMT StatusMessage: Серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись. ErrorCode:AuthenticationFailed
Строка подключения, используемая для объявления AzureWebJobsDashboard и AzureWebJobsStorage в настройках приложения: введите описание изображения здесь
1 ответ
Согласно вашему описанию, я предполагаю, что причина, по которой вы столкнулись с ошибкой, заключается в том, что ваш токен SAS не имеет достаточных разрешений для CRUD-объекта.
Маркер SAS должен быть токеном контейнера SAS, а не токеном SAS.
Кроме того, если вы установите функцию регистрации приложений в журналах диагностики веб-приложения azure, она автоматически сгенерирует токен SAS в настройках приложения вашего веб-приложения.
Более подробно, вы можете обратиться к изображению ниже:
Установите учетную запись хранения в журналах диагностики.
Затем он автоматически установит appsetting:
Обновить:
Не удалось проверить строку подключения панели мониторинга Microsoft Azure WebJobs SDK. Строка подключения учетной записи хранения Microsoft Azure не отформатирована правильно.
Если вы загружаете веб-задания в свое веб-приложение, веб-задания требуют двух настроек приложения. Одна - это строка подключения Dashboard, другая - AzureWebJobsStorage.
Для обоих этих параметров необходима строка подключения к хранилищу, а не SAS хранилища.
Вы можете найти строку подключения к хранилищу, как показано на рисунке ниже:
1. Откройте функцию ключа доступа к хранилищу.
2. Скопируйте строку подключения:
3.Замените строку подключения в настройках приложения веб-приложения.