我有一个从xml配置文件中读取设置的网站(我使用的是.config扩展名)。我这样打开文件:
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (Stream fs = new FileStream(filename, FileMode.Open))
{
configSettings = xmlSerializer.Deserialize(fs) as MyConfigSettings;
}
我只需要对该文件的读访问权,但由于某种原因,我得到一个System.UnauthorizedAccessException,除非我对该文件赋予写权限。这是我不想做的事情,只有代码才能读取文件。
为什么会发生这种情况,我应该怎样改变以阻止这种情况发生?
答案 0 :(得分:10)
您正在使用的FileStream构造函数打开具有读写权限的文件。请参阅documentation的备注部分:
对于没有FileAccess参数的构造函数,如果mode参数设置为Append,则Write是默认访问权限。否则,访问权限设置为ReadWrite。
您需要将three argument constructor与FileAccess.Read一起用作第三个参数。
像这样:
using (Stream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
答案 1 :(得分:2)
我使用StreamReader解决了这个问题:
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (StreamReader reader = new StreamReader(filename))
{
configSettings= (MyConfigSettings)xmlSerializer.Deserialize(reader);
}