Назад | Перейти на главную страницу

Журналы веб-приложения Azure в контейнере учетной записи хранения

В моей команде есть Веб-приложение .NET (4.7), работающее в Azure. Прямо сейчас в сети создаются три каталога: Диск D - кеш, временный и корень. Здесь сбрасываются файлы журналов. Меня беспокоит, что эти файлы журналов займут место и приведут к сбою приложения.

Это возможно хранить эти приложения в контейнере больших двоичных объектов, а не в веб-приложении? Я создал учетная запись хранения с участием три контейнера (cache, temp, root), используется Обозреватель хранилища для создания подписей общего доступа (SAS) на каждый контейнер, а затем вставил URL-адрес, созданный для SAS, в настройки приложения для веб-приложения. Я перезапустил приложение файлов нет сбрасываются в контейнер.

Что-то мне не хватает, чтобы это работало? Я не разработчик, поэтому не уверен, нужно ли что-то указывать в коде, чтобы это работало. Я заметил в web.config было указано местоположение D: \ home ......, поэтому я предположил, что добавление местоположения контейнера сработает, но я думаю, что нет. Будем очень признательны за любые мысли или предложения.

Попробуйте сделать это через PowerShell, как описано Вот:

Настройка выполняется в 6 шагов.

  1. Мы получаем учетную запись хранения, в которой хотим хранить журналы приложений.

$ sa = Get-AzureRmStorageAccount -ResourceGroupName "loremipsumresourcegroup" -Name "loremipsumstore"

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

New-AzureStorageContainer -Context $ sa.Context -Name "webapp-logs" -ErrorAction Ignore

  1. Затем мы генерируем токен SAS для контейнера. Мы используем те же настройки, которые Microsoft использует при создании ссылки с помощью портала Azure.

$ sasToken = New-AzureStorageContainerSASToken -Context $ sa.Context -Name "webapp-logs" -FullUri -Permission rwdl -StartTime (Get-Date) .Date -ExpiryTime (Get-Date) .Date.AddYears (200)

  1. Мы хотим обновить AppSettings, поскольку там хранится конфигурация. Но когда вы обновляете AppSettings, все настройки, отсутствующие в обновлении, будут удалены. Поэтому сначала мы хотим получить все существующие AppSettings.

$ webApp = Get-AzureRmWebApp -ResourceGroupName "loremipsumresourcegroup" -Name "LoremIpsumWebApp"

  1. Как ни странно, команда Set-AzureRmWebApp не принимает SiteConfig.AppSettings, полученный с помощью команды Get-AzureRmWebApp. Для этого нам нужно создать хеш-таблицу. Чтобы убедиться, что настройки приложения сохраняют тот же порядок, мы определяем хеш-таблицу как упорядоченную.

$ appSettings = [заказано] @ {} $ webapp.SiteConfig.AppSettings | % {$ appSettings [$.Name] = $.Value} $ appSettings.DIAGNOSTICS_AZUREBLOBCONTAINERSASURL = [строка] $ sasToken

  1. Теперь мы можем обновить службу приложений с помощью команды Set-AzureRmWebApp.

Set-AzureRmWebApp -ResourceGroupName "loremipsumresourcegroup" -Name "LoremIpsumWebApp" -AppSettings $ appSettings

Все кредиты Михаэль Хомпус