2

xml構成ファイルから設定を読み取るWebサイトがあります(.config拡張子を使用しています)。私は次のようにファイルを開きます:

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

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

ファイルへの読み取りアクセスのみが必要ですが、ファイルに書き込み権限を付与しない限り、何らかの理由でSystem.UnauthorizedAccessExceptionが発生します。これは私がやりたくないことであり、コードがファイルを読み取るためだけに必要です。

なぜこれが起こるのですか、そしてこれを止めるために何を変更する必要がありますか?

4

2 に答える 2

10

使用している FileStream コンストラクターは、読み取りと書き込みの両方のアクセス許可でファイルを開きます。ドキュメントの備考セクションを参照してください。

FileAccess パラメーターのないコンストラクターの場合、mode パラメーターが Append に設定されている場合、Write が既定のアクセスになります。それ以外の場合、アクセスは ReadWrite に設定されます。

FileAccess.Read を 3 番目の引数として3 つの引数コンストラクターを使用する必要があります。

このような:

using (Stream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
于 2012-07-25T17:11:23.327 に答える
2

代わりに StreamReader を使用して問題を解決しました。

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

using (StreamReader reader = new StreamReader(filename))
{
   configSettings= (MyConfigSettings)xmlSerializer.Deserialize(reader);
}
于 2012-07-27T00:58:01.907 に答える