【问题标题】:Elastic Beanstalk not running any commands when deploying asp.net using "Publish to AWS" Visual Studio command使用“发布到 AWS”Visual Studio 命令部署 asp.net 时,Elastic Beanstalk 未运行任何命令
【发布时间】:2015-10-14 11:28:53
【问题描述】:

我刚刚注册了 AWS 服务(微型,免费)并尝试部署 asp.net mvc 4 应用程序。 一切正常,Web 应用程序已部署并正在运行(Web 部件、数据库等),但是当我尝试写入文件系统时(例如,当我保存文件时),我遇到了一个异常

System.UnauthorizedAccessException:访问路径 'C:\inetpub\wwwroot.logs\xxx.log

文件夹“C:\inetpub\wwwroot\.logs”存在。

我尝试使用命令向 DefaultAppPool 授予文件夹权限。 我有以下网络项目结构:

  • 网络主机
    • .ebextensions
      • aws.config

aws.cofig 有以下内容:

container_commands:
  01-logscreate:
    command: "mkdir C:\inetpub\wwwroot\.logs > create-logs.log"
    cwd: "C:/inetpub/wwwroot/.ebextensions"
  01-logspermission:
    command: "icacls \"C:/inetpub/wwwroot/.logs\" /grant DefaultAppPool:(OI)    (CI) > p-logs.log"
    cwd: "C:/inetpub/wwwroot/.ebextensions"

当我访问文件时,我使用解析完整路径

HostingEnvironment.MapPath("~/.logs/xxx.log")

但是当我试图写入这个文件时,得到一个异常。

部署包中'.ebextensions'的相对路径是

Content\D_C.git\udsmonitoring.app\WebHost\obj\Debug\Package\PackageTmp\.ebextensions

提前感谢

【问题讨论】:

    标签: c# asp.net amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    已部署的应用程序池以有限的权限运行。它无权写入该目录。

    此外,您确实不需要将日志写入实例文件系统本身。这些实例是暂时的。如果您需要日志记录解决方案,请考虑使用 CloudWatch 或 LogEntries。两者都可能适合您现有的代码库,只需要更改配置文件。一般来说,如果您正在做的事情最终需要远程进入 EC2 实例来执行或查看某些内容,请考虑采用另一种方法。

    最后,如果您确实需要从应用程序的上下文中写入该目录,您可以在您的 ebextensions 中添加一个命令,该命令使用 appcmd 将应用程序池标识设置为具有更高权限的标识...或者有一个明确设置目录权限的命令。

    【讨论】:

      猜你喜欢
      • 2018-04-16
      • 1970-01-01
      • 2019-03-18
      • 2018-05-23
      • 2017-05-30
      • 2018-08-24
      • 2015-04-19
      • 2016-05-29
      • 2019-01-18
      相关资源
      最近更新 更多