Запись файлов API ASP.NET Core 5 на дисковое пространство веб-приложения Azure

У меня есть проект веб-API ASP.NET Core 5, который в настоящее время размещен как веб-приложение Azure в плане службы приложений Windows. Поскольку у меня есть пара гигабайт хранилища, связанного с планом службы приложений, я хочу использовать 10 ГБ для кэша изображений, где я храню изображения, созданные с помощью API.

Вот некоторый контекст:

  • Я не хочу использовать для этого хранилище Azure или хранилище BLOB-объектов, чтобы избежать ненужных затрат на трафик и задержек. Некоторые изображения генерируются из нескольких слоев других изображений (назовем их промежуточными изображениями), и я все кэширую.
  • Мое решение для кэширования отлично работает локально, но в настоящее время не в Azure.
  • Я хочу использовать «Удалить дополнительные файлы в месте назначения» при публикации новой версии моего API.
  • Кэш будет очищен/аннулирован с помощью вызова API, а не при развертывании или перезапуске приложения.

Как я уже сказал, кэширование работает нормально, если я запускаю локально в IIS Express. Насколько я знаю, план службы приложений Windows использует Kestrel для хостинга. Я ищу путь к хранилищу в веб-приложении Azure, где я могу создавать и удалять каталоги + создавать/читать/удалять файлы.

Поскольку план службы приложений — B1, план службы приложений выполняется на выделенной виртуальной машине Azure, согласно документам: https://learn.microsoft.com/en-us/azure/app-service/overview-hosting. -планы

Из https://learn.microsoft.com/en-us/azure/app-service/operating-system-functionality я узнал, что есть диск C и диск D.

В моем веб-приложении я могу выбрать Инструменты разработки -> Инструменты для продвижения -> Перейти к Kudu. Когда я нажимаю «Среда» в Kudu, я вижу некоторые абсолютные пути, которые я безуспешно пытался записать. Я также пытался получить доступ

  • Среда.GetEnvironmentVariable("HOME")
  • IWebHostEnvironment.WebRootPath
  • IWebHostEnvironment.ContentRootPath
  • "D:\домашний\сайт\wwwroot"
  • "Д:\домой\"

тоже без успеха. Я также попытался добавить виртуальный каталог (поскольку я хочу хранить изображения в другом каталоге, чтобы иметь возможность использовать опцию «удалить дополнительные файлы в месте назначения»). Я также подключился через FTP к /site/wwwroot/, где я могу видеть свое развернутое приложение.

Раньше мне удавалось читать файлы из виртуального каталога из приложения ASP.NET Webforms, но с этим проектом ASP.NET Core 5 API мне не удалось сопоставить относительные пути с абсолютными путями.

Мой главный вопрос: какой абсолютный путь мне нужно использовать в моем проекте API, чтобы иметь разрешения на создание/удаление каталога и разрешение на создание/чтение/удаление файла в моем веб-приложении Azure?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 056
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, я понял это. У меня было несколько фатальных ошибок при запуске приложения. Кажется, они были связаны с ApplicationInsights. Я полностью удалил его с веб-портала Azure, и теперь все работает.

Следующий путь работает как базовый путь D:\\home\\

Кричите, чувак, большое тебе спасибо, настоящий спаситель жизни. Пришлось перенести приложение IIS в Azure в проекте, который я не создавал, и они использовали локальное хранилище временных файлов для создания PDF-файла, прежде чем использовать его для отправки для загрузки. Пришлось найти какой-то путь, чтобы заставить его работать, и D:\home\ был идеальным. Спасибо.

Matthew Young 03.08.2022 17:24

Другие вопросы по теме