문제

RTF 파일을 ASP.NET 웹 응용 프로그램의 템플릿으로 사용하고 있습니다. 내 vb.net 코드는 Streamreader를 사용하여 파일을 읽고 일부 문자열을 대체하며 데이터베이스의 데이터로 새 Word 문서를 만듭니다. 내 코드는 스트리트 리더가 닫히고 처분합니다. 그러나 수정 된 RTF 파일을 웹 서버에 업로드하려고하면 "쓰기를 위해 파일을 열 수 없다"는 오류가 발생합니다. 따라서 분명히 ASP.NET 페이지가 실행 된 후 파일은 오래 지속됩니다.

StreamReader를 어떻게 닫을 수 있습니까? Web.config 파일을 편집하여 웹 응용 프로그램이 다시 시작되도록하는 것만으로 도이 파일의 잠금을 제거하기에 충분하지 않습니다.

도움이 되었습니까?

해결책

VB.NET에서 사용할 수있는 "사용"관용 사용을 고려하십시오.

using(StreamReader reader = new StreamReader(...)) {

}

예외가 발생하더라도 스트림이 닫히게됩니다.

이와 같은 모든 idisposable 구현을 종료하는 것을 고려하십시오

다른 팁

가까이/폐기 한 후에도 매달려 있으면 이상하게 보입니다. StreamReader와 함께 Filestream을 사용하고 있습니까? 일반적으로 파일에 대한 액세스를 제어하기 위해 Filestream을 사용하고 LA에이를 피드합니다.

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();

더 나은 방법은 스트림 리더의 사용을 하나의 방법으로 제한하는 경우 마침내 닫기/폐기를 고수하십시오.

스트림이 마지막으로 닫혀 있는지 확인하십시오.

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();
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top