gpt4 book ai didi

c# - Windows Azure - approot 路径中的访问被拒绝

转载 作者:行者123 更新时间:2023-11-30 22:32:03 24 4
gpt4 key购买 nike

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

对此的任何想法将不胜感激。

最佳答案

查看 constructor you are using 的文档我看到以下内容:

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 that also specifies the FileAccess mode像这样:

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

我认为这是您问题的关键。

** 编辑 **

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

如果您支持后者,this thread可能会有真正的帮助!

关于c# - Windows Azure - approot 路径中的访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com