C# Windows Azure-批准路径中的访问被拒绝

C# Windows Azure-批准路径中的访问被拒绝,c#,azure,azure-worker-roles,C#,Azure,Azure Worker Roles,我正在尝试使用FileStream打开一个文件(作为“内容”和“始终复制”选项包含在我的项目中)。我得到以下错误: ***Access to the path 'E:\approot\PdataParsingRules.xml is denied.*** 我正在使用以下代码获取文件的路径: Path.Combine(Environment.GetEnvironmentVariable("RoleRoot") + @"\", @"approot\PdataParsingRules.xml");

我正在尝试使用FileStream打开一个文件(作为“内容”和“始终复制”选项包含在我的项目中)。我得到以下错误:

***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中的普通用户具有读取、读取和执行权限。管理员和系统对文件具有完全控制权。如果我手动将全部权限授予普通用户,我的反序列化工作正常,但由于明显的原因,这并不能解决问题


如果您对此有任何想法,我们将不胜感激。

请查看以下文档:

对于没有FileAccess参数的构造函数,如果模式参数 设置为追加,写入是默认访问。否则,访问 设置为读写

默认情况下,如果您没有使用提升的权限运行您的角色,则您的代码没有对文件的写入权限。你只能读它们。请尝试这样使用:

fileStream = new FileStream(rulePath, FileMode.Open, FileAccess.Read); 
我认为这是你的问题的关键

**编辑**

现在我使用这两个构造函数进行了测试,我可以确认这(我描述的)是您的问题。如果只想读取文件,请使用我引用的构造函数(包括FileAccess参数)。如果还想写入文件,则必须包含启动任务以更改文件权限


如果你支持后者,可能会有真正的帮助

阿斯塔科夫:非常感谢你的回答。我的要求是在读取模式下打开文件。FileAccess参数足够了,现在我的反序列化工作正常:-)