1

xml ファイルから読み取ってデータを表示する asp.net mvc で Web サイトを開発しました。このファイルは、この xml ファイルを構築するバックエンド プロセスによって定期的に更新され、最終的に ftp 経由でウェブホストにアップロードされます。

これは問題なく機能していますが、先週かそこらで問題が発生しました。「ファイルは別のプロセスで使用されています」というasp.net例外が発生します。私にはこれが何なのか見当もつかないし、とても奇妙だと思う。ここ数か月、コードを何も変更していません。

以下に、xml ファイルをシリアル化するために使用する典型的な方法を示します。

    public static IEnumerable<FStreamObject> GetStreams()
    {

        using (FileStream fs = new FileStream(HttpRuntime.AppDomainAppPath+"/ff.xml", FileMode.Open))
        {
            XmlReader ffXML = XmlReader.Create(fs);

            XmlSerializer ser = new XmlSerializer(typeof(FXmlModel));

            var sList = (FXmlModel)ser.Deserialize(ffXML);

            fs.Close();

            return sList.FSObjectList.OrderByDescending(x => x.Cash);
        }

    }
4

2 に答える 2

2

ファイルのコンテンツを更新する他のプロセスがまだこのファイルをロックしていると思います。したがって、ファイル操作が完了したら、このファイルへのロック/接続を解放していることを確認するために、そのコードを修正する必要がある場合があります。

于 2012-07-23T12:36:07.343 に答える
1

fs.Close() 呼び出しの前に例外がスローされていることが問題である可能性があります。try-catch-finally を使用してみて、fs.Close() を finally ブロックに入れます。

また、Close() メソッドはオブジェクトをすぐに破棄しないことに注意してください。Dispose() を使用して、参照がメモリから消去されていることを確認することもできます。

それが役に立てば幸い!

于 2012-07-23T12:50:43.720 に答える