首页 > 解决方案 > 如何使用 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 的新手,因此感谢所有反馈。

标签: c#amazon-web-servicesasp.net-coreamazon-elastic-beanstalk

解决方案


推荐阅读