2009-08-03 7 views
1

내 애플리케이션 Pelotonics에 문제가 있습니다. 사용자가 파일을 다운로드하면 시스템은 파일 다운로드가 완료 될 때까지 모든 들어오는 요청을 차단하는 것 같습니다. 다운로드 대화 상자 (브라우저의 표준)를 열려면 적절한 기술은 무엇이며, 사용자가 파일 다운로드를 시작하게하고 파일 다운로드가 진행되는 동안 사용자가 응용 프로그램 전체에서 계속할 수있게하십시오.파일을 다운로드하는 동안 모든 요청이 차단됩니다.

우리가 서버에서 파일을 가져 오는 방법은 쿼리 문자열을 통해 값을 전달하는 별도의 ASPX 페이지가 있고 서버에서 파일 스트림을 검색 한 다음 "콘텐츠 -disposition "헤더를 응답에 추가 한 다음 파일의 스트림을 반복하고 2KB 청크를 response.outputstream으로 읽습니다. 그런 다음 응답이 완료됩니다. 끝.

시계이 문제에 대한 빠른 스크린 캐스트에 대한 : 그런데

http://www.screencast.com/users/PeloCast/folders/Jing/media/8bb4b1dd-ac66-4f84-a1a3-7fc64cd650c0

, 우리는 ASP.NET과 C#에있어 ...

감사합니다! Daniel

답변

0

ASP.NET은 세션 당 하나의 동시 페이지 실행을 허용하며이 방법을 다르게 구성 할 수는 없습니다.

이것은 아주 간단한 해결 방법은 아니지만 Application_BeginRequest (global.asax)의 요청 쿠키에 ASP.NET_SESSIONID 값을 다시 작성하면 도움이 될 수 있습니다. 물론, 다른 방법으로 인증을해야합니다. 나는 이것을 시도하지 않았다.

또 다른 방법은 다운로드 프로세스를 위해 별도의 스레드를 시작하는 것이지만 리소스를 닫는 작업자 스레드없이이 작업을 수행하는 방법을 찾아야합니다.

나는 HttpResponse.TransmitFile을 사용하지 않는 이유가 있습니까?

+0

아니, Skrim, 그건 고전적인 ASP에있었습니다. –

+0

은 고전적인 ASP에 있었습니까? – Skrim

+0

TransmitFile은 filename 매개 변수를 사용합니다. 내가받는 파일은 Rackspace의 Cloud Files Servers에 있습니다. 따라서 서버로 인증하고 파일을 스트림으로 가져와 해당 스트림을 Response.OutputStream에 기록해야합니다. 나는 TransmitFile이 그런 식으로 작동하지 않는다는 것을 확신합니다 ... 나는 이것을 발견했지만 MSDN 기사가 정확하게이 문제에 대답하지 않는다 : http://forums.asp.net/t/1112997.aspx –

관련 문제