Asp.net
Windows 容器中的容器文件權限
我有一個
microsoft/aspnet託管簡單 Web API 的 Windows Docker 容器 ()。Web API 接受來自表單的文件,將它們保存在臨時文件夾中,進行一些處理,然後返回結果。這在本地部署時工作正常,但在我的 Docker 容器中完成時,我的臨時文件夾 (
App_Data) 上出現文件權限錯誤。有沒有辦法授予 IIS 使用者執行程式碼以訪問該文件,或者向任何使用者打開文件夾以進行讀/寫訪問?
目前的 Docker 文件如下:
FROM microsoft/aspnet COPY ./Deploy/ /inetpub/wwwroot RUN mkdir /inetpub/wwwroot/App_Data錯誤消息片段我從 docker 映像執行 API:
"InnerException":{"Message":"An error has occurred.","ExceptionMessage":"Access to the path 'C:\\inetpub\\wwwroot\\App_Data\\BodyPart_481b6424-f9a5-4608-894d-406145a48445' is denied.","ExceptionType":"System.UnauthorizedAccessException"看起來在 aspnet-docker github 上存在一個關於同一問題的錯誤。$$ link $$
cacls App_Data /G IIS_IUSRS:F同時,啟動容器後執行似乎暫時修復了問題。
不清楚為什麼,但
cacls在作為建構容器的一部分執行時似乎沒有工作。切換到 usingicacls,並且能夠授予IIS_USRS文件夾的權限。添加到 dockerfile 的行:
RUN icacls 'C:\inetpub\wwwroot\App_Data' /grant 'IIS_IUSRS:(F)'
我無法發表評論,因為我沒有足夠的聲譽,但如果@Darendal 的答案不起作用(它對我不起作用),那麼試試這個語法
RUN icacls C:\inetpub\wwwroot\App_Data /grant "BUILTIN\IIS_IUSRS:(OI)(CI)F" /t