簡體   English   中英

使用“發布到AWS” Visual Studio命令部署asp.net時,Elastic Beanstalk不運行任何命令

[英]Elastic Beanstalk not running any commands when deploying asp.net using “Publish to AWS” Visual Studio command

我剛剛在AWS服務(微型,免費)上注冊,並嘗試部署asp.net mvc 4應用程序。 一切工作正常,已部署Web應用程序並運行(Web部件,數據庫等),但是當我嘗試寫入文件系統時(例如,當我保存文件時),我卻遇到了異常

System.UnauthorizedAccessException:訪問路徑'C:\\ inetpub \\ wwwroot.logs \\ xxx.log

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

我試圖使用命令向DefaultAppPool授予文件夾權限。 我有以下Web項目結構:

  • 虛擬主機
    • .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”的相對路徑為

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

提前感謝

部署的應用程序池以有限的權限運行。 它無權寫入該目錄。

此外,您確實不需要將日志寫入實例文件系統本身。 這些實例是瞬態的。 如果您需要日志記錄解決方案,請考慮使用CloudWatch或LogEntries。 兩者都可能適合您現有的代碼庫,只需更改配置文件即可。 通常,如果您要執行的操作最終導致您需要遠程進入EC2實例以執行或查看操作,請考慮采用其他方法。

最后,如果確實需要從應用程序上下文中寫入該目錄,則可以在ebextensions中添加一個命令,該命令使用appcmd將應用程序池標識設置為具有更大特權的目錄...明確設置目錄權限的命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM