Asp.net

Windows 容器中的容器文件權限

  • January 26, 2022

我有一個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在作為建構容器的一部分執行時似乎沒有工作。切換到 using icacls,並且能夠授予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

引用自:https://stackoverflow.com/questions/49459465