Dar*_*dal 5 asp.net iis docker docker-for-windows
我有一个microsoft/aspnet
托管简单Web API 的Windows Docker容器()。Web API接受来自表单的文件,将它们保存在temp文件夹中,进行一些处理,然后返回结果。
在本地部署时此方法工作正常,但在Docker容器中完成此操作后,我的临时文件夹(App_Data
)出现文件权限错误。
是否可以授予IIS用户代码正在运行的权限,以使其可以访问该文件,或者向任何用户打开该文件夹以进行读/写访问?
当前的Docker文件如下:
FROM microsoft/aspnet
COPY ./Deploy/ /inetpub/wwwroot
RUN mkdir /inetpub/wwwroot/App_Data
Run Code Online (Sandbox Code Playgroud)
错误消息代码段,我从docker image运行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"
Run Code Online (Sandbox Code Playgroud)
似乎在aspnet-docker github上打开了一个关于此相同问题的错误。[链接]
同时,cacls App_Data /G IIS_IUSRS:F
启动容器后,似乎可以暂时解决问题。
不清楚原因,但cacls
在作为构建容器的一部分运行时似乎不起作用。切换为使用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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2334 次 |
最近记录: |