我在 Windows Server 核心容器中的 IIS 上运行 ac# Web 应用程序。在 dockerfile 中,我创建了一个没有密码的新用户“myUser”。我还将凭据添加到 Dockerfile 中的 Azure 文件存储中:
USER myUser
RUN powershell "cmdkey /add:mystore.file.core.windows.net /user:AZURE\mystore /pass:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX=="
我使用“myUser”添加了一个新的应用程序池标识,并将该应用程序池用于我的应用程序。当我启动容器并使用“docker exec”连接时,我以新用户身份登录。我可以使用“ls \mystore.file.core.windows.net\dockerstore\”访问路径。使用“cmdkey /list”可以正常列出凭据。
但是,我的应用程序在相同的用户投诉下运行,它无法到达商店。在 Directory.Exists() 上报告 System.IO.IOException。
我也在我的本地机器上完成了这个操作,并且应用程序运行没有问题。我也尝试过使用带密码的用户,但无济于事。应用程序使用存储的完整 UNC 路径。
在 Windows 服务应用程序上尝试了同样的事情。同样的事情:可以在 powershell 会话中列出文件,但我的应用程序无法访问它。
我错过了什么吗?
编辑:这是我所做的:
NET USER myAzureFilesUser myAzureFilesPasswordXXXXXXXXXXX== /add /y
NET LOCALGROUP Administrators /add myAzureFilesUser
Import-Module WebAdministration
$processModelProperties = @{userName='myAzureFilesUser ';password='myAzureFilesPasswordXXXXXXXXXXX==';identitytype=3}
Set-ItemProperty (Join-Path 'IIS:\AppPools\' 'My AppPool Name') -name processModel -value $processModelProperties