2017-06-11 60 views
0

我有一個c#web應用程序在Windows服務器核心容器中的IIS上運行。 在dockerfile中,我創建了一個沒有密碼的新用戶'myUser'。 我添加憑據到我的Azure的文件存儲在Dockerfile還有:Windows容器無法訪問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 
+0

您的應用程序池在帳戶下以與Azure文件存儲帳戶相同的名稱作爲密碼運行? –

+0

@GSA不,不是相同的帳戶。用戶/密碼憑證使用cmdkey存儲。 –

+0

我敢肯定,如果你設置了兩個相同的用戶名|密碼,它將工作,不需要任何額外的東西 –

回答