2012-01-18 20 views
2

我正在嘗試使用FileStream打開一個文件(包含在我的項目中作爲Content和Always Always選項)。我收到以下錯誤:Windows Azure - 在批准路徑中拒絕訪問

***Access to the path 'E:\approot\PdataParsingRules.xml is denied.*** 

我使用下面的代碼讓我的文件的路徑:

Path.Combine(Environment.GetEnvironmentVariable("RoleRoot") + @"\", @"approot\PdataParsingRules.xml"); 

,我使用下面的代碼,以解序列化我的文件:

ParsingRules rules; 
XmlSerializer serializer = new XmlSerializer(typeof(ParsingRules)); 
fileStream = new FileStream(rulePath, FileMode.Open); 
rules = (ParsingRules)serializer.Deserialize(fileStream); 
return rules; 

當我對我的一個工作者角色實例(以完全信任模式運行)執行RDC時,我看到此特定文件具有讀取,讀取&對該VM中的常規用戶執行權限。管理員和系統完全控制文件。我的序列化工作正常,如果我手動給予普通用戶的完整權限,但由於顯而易見的原因,這並不能解決問題。

對此的任何想法將不勝感激。

For constructors without a FileAccess parameter, if the mode parameter is set to Append, Write is the default access. Otherwise, the access is set to ReadWrite.

,默認情況下,如果你不運行與提升的權限您的角色您的代碼不具有對文件的寫訪問:在爲constructor you are using我看到下面的文檔

回答

3

展望。你只能閱讀它們。請嘗試使用這樣的constructor that also specifies the FileAccess mode

fileStream = new FileStream(rulePath, FileMode.Open, FileAccess.Read); 

我認爲這是您的問題的關鍵。

**編輯**

現在,我用兩個構造我可以證實,這(我所描述的)一直是你的問題進行測試。如果你只想讀你的文件,使用我引用的構造函數(包括FileAccess參數)。如果您還想寫入文件,則必須包含啓動任務以更改文件權限。

如果你是後者,this thread可能真正的幫助!

+0

astaykov:非常感謝您的答覆。我的要求是以讀模式打開文件。 FileAccess參數足夠了,現在我的反序列化工作如預期:-) – Vinod 2012-01-19 08:12:23