2

ASP.NET Web アプリケーションのテンプレートとして RTF ファイルを使用しています。私の VB.NET コードは、StreamReader を使用してファイルを読み取り、いくつかの文字列を置き換えて、データベースからのデータで新しい Word ドキュメントを作成します。私のコードは、StreamReader を閉じて破棄します。しかし、改訂した RTF ファイルを Web サーバーにアップロードしようとすると、「ファイルを書き込み用に開くことができません」というエラーが表示されます。したがって、明らかに、ASP.NET ページが実行された後もファイルは開いたままです。

StreamReader を強制的に閉じるにはどうすればよいですか? web.config ファイルを編集して Web アプリケーションを強制的に再起動しても、このファイルのロックを解除するには不十分です。

4

3 に答える 3

1

クローズ/ディスポーズ後でもハングアップしている場合は奇妙に思えます。StreamReader と一緒に FileStream を使用していますか? 通常、FileStream を使用してファイルへのアクセスを制御し、それを StreamReader にフィードします。

FileStream fsIn = new FileStream("path",FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader srIn = new StreamReader(fsIn, System.Text.Encoding.Default);

//...do stuff....

srIn.close();
srIn.Dispose();
fsIn.close();
fsIn.Dispose();

さらに良いことに、StreamReader の使用を 1 つのメソッドに制限している場合は、Close/Dispose を Final に貼り付けます。

于 2009-02-12T01:40:14.637 に答える
0

Make sure the stream is closed in finally.

FileStream fsIn = null;
StreamReader srIn = null; 

try
{
  fsIn = new FileStream("path",FileMode.Open, FileAccess.Read, FileShare.None);
  srIn = new StreamReader(fsIn, System.Text.Encoding.Default);

  //...do stuff....

}
catch (Exception ex)
{
}
finally
{
  srIn.close();
  srIn.Dispose();
  fsIn.close();
  fsIn.Dispose();
}
于 2009-02-16T09:07:47.603 に答える