Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用YAML文件在Elastic Beanstalk中设置文件夹权限?_C#_Amazon Web Services_Configuration_Yaml_Amazon Elastic Beanstalk - Fatal编程技术网

C# 如何使用YAML文件在Elastic Beanstalk中设置文件夹权限?

C# 如何使用YAML文件在Elastic Beanstalk中设置文件夹权限?,c#,amazon-web-services,configuration,yaml,amazon-elastic-beanstalk,C#,Amazon Web Services,Configuration,Yaml,Amazon Elastic Beanstalk,我有一个C#Web API Elastic Beanstalk应用程序,它需要一个位于部署目录之外的文件夹,IUSER和IIS#U用户可以将其写入。我已经创建了一个.config文件,并将其放在项目的顶层.ebextensions文件夹中。内容如下: commands: 0_mkdir: command: mkdir C:\\AppFolder\\ 1_set_iuser_permissions: command: cacls C:\\AppFolder\\ /t /e

我有一个C#Web API Elastic Beanstalk应用程序,它需要一个位于部署目录之外的文件夹,IUSER和IIS#U用户可以将其写入。我已经创建了一个.config文件,并将其放在项目的顶层.ebextensions文件夹中。内容如下:

commands:
  0_mkdir:
    command: mkdir C:\\AppFolder\\

  1_set_iuser_permissions:
    command: cacls C:\\AppFolder\\ /t /e /g IUser:f IIS_Users:f

但是,在成功创建文件夹时,未设置权限。如果有人知道我做错了什么,我将非常感激。提前非常感谢。

最后我改用Json而不是YAML as,尽管我的YAML已经过几位在线YAML测试人员的验证,AWS仍然不会接受。它总是与传递给icacls的参数有关。我还更改为应用程序App_数据文件夹中的一个文件夹,因为在应用程序外部的任何目录上设置权限似乎不起作用。因此,我的最终配置文件如下所示:

{
    "container_commands": {
        "01": {
            "command": "icacls \"C:/inetpub/wwwroot/AppName_deploy/App_Data/AppFolder\" /grant DefaultAppPool:(OI)(CI)F"
        }
    }
}

希望这对其他人有所帮助。

看起来您使用的.net帐户无效(除非这些是您创建的自定义帐户)。这是未设置权限的部分原因。它们应该是
IUSR
IIS\u IUSRS

此外,
container\u命令在安装应用程序/服务器环境之后执行,但在部署开始之前执行。除了在visual studio中使用wpp.targets文件外,没有其他方法可以对部署目录中的文件/文件夹设置权限

下面的文章是一篇很好的阅读,使用wpp.targets来解决您的问题。

将文件
01\u fix\u permissions.config
放入
.ebextensions
文件夹中

内容:

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/49_change_permissions.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      sudo chown -R ec2-user:ec2-user tmp/

AppName是elasticbeanstalk应用程序名吗?另外,您如何从WebAPI访问它?AppDomain.CurrentDomain.BaseDirectory+@“应用程序数据\”;似乎提供了wwwroot\App\u数据