Я новичок в ASP.NET Core и создаю приложение. Одна из функций, которая работает локально, - это загрузка файла и его сохранение в созданной мной папке wwwroot / uploads.
У меня нет проблем с сохранением этого файла и последующим доступом или загрузкой этого файла локально. Как только я начал развертывать свое приложение, используя Elastic Beanstalk, я неоднократно получаю следующую ошибку, когда пытаюсь загрузить файл:
"UnauthorizedAccessException: доступ к пути 'C: \ inetpub \ AspNetCoreWebApps \ AppName \ wwwroot \ uploads \ filename.txt' запрещен."
Поиск по этой проблеме привел меня к добавлению папки .ebextensions для размещения файлов конфигурации, чтобы добавить разрешения на запись и добавить эту папку в исходный комплект. Насколько я понял, я настроил это следующим образом:
source bundle zip:
-deployment manifest
-source code folder:
-all dlls
-wwwroot folder
-.ebextensions folder added here
В этот момент я попытался создать файл конфигурации JSON, но я все еще получил ту же ошибку. Я попытался создать файл конфигурации YAML, но все равно получил ту же ошибку.
Файл YAML:
container_commands:
01-changeperm:
command: icacls "C:/inetpub/AspNetCoreWebApps/AppName/wwwroot" /grant DefaultAppPool:(OI)(CI)F /T
Файл JSON:
{
"container_commands": {
"01": {
"command": "icacls "C:/inetpub/AspNetCoreWebApps/AppName/wwwroot" /grant DefaultAppPool:(OI)(CI)F /T"
}
}
}
Если кому-то интересно в стеке, когда он ломается:
UnauthorizedAccessException: доступ к пути 'C: \ inetpub \ AspNetCoreWebApps \ AppName \ wwwroot \ uploads \ filename.txt' запрещен.
System.IO.FileStream.ValidateFileHandle (SafeFileHandle fileHandle)
System.IO.FileStream.CreateFileOpenHandle (режим FileMode, общий доступ к FileShare, параметры FileOptions)
System.IO.FileStream..ctor (путь строки, режим FileMode, доступ к FileAccess, общий доступ к FileShare, int bufferSize, параметры FileOptions)
AppName.Utilities.FileHelper.WriteFileToFolder (IFormFile formFile, строка filePath) в FileHelper.cs
AppName.Controllers.HomeController.Create (модель FileUpload) в HomeController.cs
-
Как я могу узнать, запущены ли мои конфигурационные файлы? Я не вижу, чтобы они запускались как события на EBS, и это единственное место, где я могу их искать.
Или же файлы конфигурации настроены неправильно?
Наконец, у кого-нибудь есть совет, что еще может быть проблемой здесь? Я новичок в ASP.NET Core и EBS, поэтому все отзывы приветствуются.