如何为弹性beanstalk窗口应用程序设置文件夹权限?

时间:2014-07-30 21:49:51

标签: windows amazon-web-services amazon-ec2 asp.net-web-api amazon-elastic-beanstalk

我目前正在构建一个C#WebApi 2应用程序,我将上传到Amazon Elastic Beanstalk实例进行部署。到目前为止我已经取得了成功,在我的本地机器上,我刚刚完成了文件上传功能的测试,以便客户上传图像。

它的方式是我接受Web Api中的multipart / formdata并将临时文件(使用随机名称,如BodyPart_24e246c7-a92a-4a3d-84ef-c1651416e667)保存到App_Data文件夹。临时文件放入S3 Bucket,我在SQL Server数据库中创建一个引用。

在本地上传单个或多个文件时,测试工作正常,但是当我将应用程序部署到Elastic Beanstalk并尝试上传时,我会收到错误,例如"无法找到路径的一部分&C; C :\ inetpub \ wwwroot \ sbeAPI_deploy \ App_Data \ BodyPart_8f552d48-ed9b-4ec2-9986-88cbffd673ee'" 或类似的人说完全拒绝访问。

我一直在尝试在线找到解决方案几个小时,但AWS文档已经到处都是,教程/其他问题似乎已经过时了。我认为这与没有在EC2服务器上编写临时文件的权限有关,但我无法弄清楚如何修复它。

非常感谢。

5 个答案:

答案 0 :(得分:3)

自2013年4月以来已经可以实现,另请参阅here:基本上您需要执行的步骤如下:

  1. 通过解决方案资源管理器在项目的顶层创建名为.ebextensions的文件夹
  2. 在此文件夹中添加您的配置文件,例如 myapp.config (将myapp替换为您的Elastic Beanstalk的应用名称)
  3. 将下面显示的代码添加到刚刚创建的配置文件中。将MyApp替换为Visual Studio
  4. 中显示的项目名称(不是解决方案名称)
  5. 全套!!确保 App_Data 中有一个文件,否则Visual Studio不会发布它。

    {
        "containercommands": {
            "01-changeperm": {
                "command": "icacls \"C:/inetpub/wwwroot/MyApp_deploy/App_Data\" /grant DefaultAppPool:(OI)(CI)"
            }
        }
    }
    

答案 1 :(得分:0)

这个问题已经很久了,但对于那些最终遇到同样问题的人来说。我在AWS遇到了同样的问题。连接到您的实例并更改要将文件上载到的文件夹的属性。选择要授予读/写访问权限的文件夹。单击属性并以该方式设置权限。

我的问题是将图片上传到服务器。我无法将其放在App_Data文件夹中,因为这是仅为应用程序保留的特殊优惠,我需要通过URL访问图像。所以我创建了另一个文件夹" Uploads"。发布我的api然后通过远程桌面连接到实例。找到Content文件夹,并将属性设置为DefaultAppPool的读/写。这解决了我的问题,希望这有助于那里的人。

答案 2 :(得分:0)

我遇到了同样的问题(无法在Elastic Beanstalk上写到Web应用程序的App_Data文件夹中的文件)。

就我而言,在我的Visual Studio项目的App_Data文件夹中创建一个虚拟文件就足够了。当我这样做时,App_Data文件夹是在部署期间创建的,具有允许Web应用程序对其进行写入的权限。

无需.ebextensions更改文件夹权限。

答案 3 :(得分:0)

要授予对DefaultAppPool的写权限,您可以
创建一个.ebextensions文件夹
创建一个配置文件并将其放在您的.ebextensions文件夹中

这将更改您的wwwroot文件夹的权限
imageData.SetDimensions((pixeldata.shape[0],pixeldata.shape[1],1)) imageData.SetSpacing([1,1,1]) imageData.SetOrigin([0,0,0])

答案 4 :(得分:0)

默认情况下,App_Data文件夹不具有写权限,并且在部署应用程序时必须设置适当的权限。

请查看此帖子,以详细了解操作方法:http://thedeveloperspace.com/granting-write-access-to-asp-net-apps-hosted-on-aws-beanstalk/