ASP.NET使用FileStream(FileMode.Open)读取xml - > System.UnauthorizedAccessException

pfe*_*eds 2 asp.net permissions file-permissions filestream

我有一个从xml配置文件中读取设置的网站(我使用的是.config扩展名).我这样打开文件:

XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));

using (Stream fs = new FileStream(filename, FileMode.Open))
{
     configSettings = xmlSerializer.Deserialize(fs) as MyConfigSettings;
}
Run Code Online (Sandbox Code Playgroud)

我只需要对该文件的读访问权限,但由于某种原因,我得到一个System.UnauthorizedAccessException,除非我对该文件赋予写权限.这是我不想做的事情,只需要代码来读取文件.

为什么会发生这种情况,我应该改变什么来阻止这种情况发生呢?

jpm*_*c26 10

您正在使用的FileStream构造函数打开具有读写权限的文件.请参阅文档的备注部分:

对于没有FileAccess参数的构造函数,如果mode参数设置为Append,则Write是默认访问权限.否则,访问权限设置为ReadWrite.

您需要使用FileAccess.Read作为第三个参数的三个参数构造函数.

像这样:

using (Stream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
Run Code Online (Sandbox Code Playgroud)