我知道,老線索......但答案可能對某些人有用。
似乎一個天青工作進程在自定義用戶下運行(在taskmgr中顯示爲GUID)。這個用戶帳戶看起來是相當有限的,並且沒有對文件系統的讀取權限(甚至在approot目錄內)。
我的解決方案是爲azure角色創建啓動腳本(請參閱msdn article),該腳本使用icacls來添加訪問文件的權限。在這種情況下,我創建了一個名爲啓動\ INSTALL.CMD在我的項目文件,其中包含以下內容:
@echo off
if "%EMULATED%"=="true" goto :EOF
echo Allowing access to files
cd directory_where_files_exist
icacls *.* /grant Everyone:F
在我ServiceDefinition.csdef中的文件,我指示Azure的部署系統的部署過程中運行此啓動腳本把這個角色定義中(如<WorkerRole>):
<Startup>
<Task executionContext="elevated" commandLine="startup\Install.cmd">
<Environment>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
</Task>
</Startup>
「模擬」的變量被設置在模擬器運行 - 注意,在啓動/ INSTALL.CMD文件之上,我跳過做權限如果在模擬器中運行則更改。
我有完全相同的問題 - File.Open(filename,FileMode.Open)拋出拒絕訪問異常。該文件當然存在(File.Exists(filename)返回true)。你是否設法解決這個問題? – 2012-04-24 00:06:46