ASP.NET에서 업로드 된 파일을 받으면 일반적으로 HttpPostedFile
개체를 통해 파일을 업로드합니다. 수신 된 데이터는 HttpPostedFile.InputStream
을 통해 사용할 수 있습니다. 이 속성을 통해 직접 처리 할 필요가 없다고 믿을 수 있습니다. 그러나 문서에서는 절대로 스트림을 처리하는 사람이 인 것을으로 언급하지 않았으며 ASP.NET 프레임 워크에서 수행 한 경우 인 경우 그것은 그렇게합니다 (말하자면, 나는 세션에 스트림을 저장할 수 있습니까?).누가 HttpPostedFile.InputStream을 폐기해야합니까? - 언제?
이제는 많은 파일을받지 못했고이 특정 스트림을 처리하지 않아도 문제가 발생하지 않았지만 청결 함을 알면 누구나 디자인 계약이 무엇인지 알 수 있습니까?
틀림없이 세션에있는 것을 저장하는 것은 좋지 않은 생각처럼 들리지만, 나는 단지 스트림의 정확한 수명을 아는 것이 관련이있는 예를 찾기 위해 노력했을뿐입니다. 더 좋은 예는 이미지를 처리하고 저장하고 전경에서 웹 요청을 계속하기 위해 백그라운드 작업자를 시작하는 것입니다. 웹 요청은 작업자보다 먼저 완료 될 수 있으므로 스트림이 정확하게 무효화 될 때를 알아야합니다. 어쨌든, 나는 당신이 옳다고 생각합니다. 비록이 문서에서 마이크로 소프트의 더 나은 워드 프로세서를 인정 했었지만 (많은 IDisposable 이슈들과 마찬가지로). –
당신이 그것을 백그라운드 프로세스에 넘기고 싶다면 ... 어느 것이 좋을까요 ... 나는 여전히 파일 시스템에 파일을 저장하고 인스턴스를 전달하는 대신 백그라운드 스레드에 파일에 대한 참조를 전달합니다 스트림의. –
InputStream이 제 통제를 벗어나서 닫히는 것을 감안할 때 분명히 그렇게 할 것입니다. 그러나 일반적으로 병목 현상을 피하기 위해 임시 디스크 액세스는 피하는 것이 더 좋지만 일시적이지만 큰 바이트 배열은 문제가되지 않습니다. 어쨌든 정보 주셔서 감사합니다! –