使用“发布到aws”部署asp.net时,Elastic Beanstalk不运行任何命令;Visual Studio命

本文关键字:运行 Beanstalk Elastic 任何 命令 Studio Visual 发布到 aws net asp | 更新日期: 2023-09-27 18:04:35

我刚刚注册了AWS服务(micro,免费),并试图部署asp.net mvc 4应用程序。一切都很好,web应用程序部署和运行(web部分,数据库等),但当我试图写文件系统(例如,当我保存一个文件),我得到一个异常

系统。UnauthorizedAccessException:对路径的访问"C: ' inetpub ' wwwroot.logs ' xxx.log

文件夹"C:'inetpub'wwwroot'。日志"存在。

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

  • 高手写
    • .ebextensions
      • aws.config

aws。配置包含以下内容:

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")

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

'的相对路径。部署包中的ebeextensions

内容' D_C.git ' udsmonitoring.app '高手写包' obj '调试' ' PackageTmp ' .ebextensions

提前致谢

使用“发布到aws”部署asp.net时,Elastic Beanstalk不运行任何命令;Visual Studio命

被部署的应用程序池以有限的权限运行。它没有写那个目录的权限。

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

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