c# - 如何使用 C# ASP.NET Core 应用程序通过 Elastic Beanstalk 为特定文件夹设置权限?
问题描述
我是 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 文件句柄)
System.IO.FileStream.CreateFileOpenHandle(FileMode 模式、FileShare 共享、FileOptions 选项)
System.IO.FileStream..ctor(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize, FileOptions options)
FileHelper.cs 中的 AppName.Utilities.FileHelper.WriteFileToFolder(IFormFile formFile, string filePath) HomeController.cs 中的 AppName.Controllers.HomeController.Create(FileUpload model)
-
如何判断我的配置文件是否正在运行?我没有看到它们在 EBS 上作为事件运行,这是我知道寻找它们的唯一地方。
或者,配置文件本身是否设置错误?
最后,有没有人对这里的其他问题有什么建议?我是 ASP.NET Core 和 EBS 的新手,因此感谢所有反馈。
解决方案
推荐阅读
- android - Android Kotlin 将片段充气到容器中失败
- javascript - Angular - 组件被销毁后从服务回调
- r - R - 以相同的方式形成两个不同的列表
- java - AndroidStudio DexArchiveMergerException:更新后无法合并dex
- vb.net - 当其他文本框为空时禁用文本框
- java - 未找到休眠实体
- java - 遵循spring boot和jsp的一个教程。得到以下错误
- git - AWS:无法克隆 repo Codecommit,请求的 URL 返回错误:403
- sql - 仅选择特定列仅包含特定值的 ID
- android - 领域和 LiveData - Transformations.map 未将列表发布到 MutableLiveData