2009-07-16 2 views
4

저는 C# 파일에 Response.write과 함께 Excel 파일을 만들고 1-2 분이 걸립니다. 파일 생성이 진행 중임을 나타내려면 UpdateProgress을 사용하고 싶습니다. 그러나 UpdateProgress을 사용하면 파일이 생성되지 않습니다.ASP.NET에서 Response.write를 사용하여 파일을 생성하는 동안 updateprogress 사용

여기에 무엇이 있는지 알려주세요.

+0

Response.write() ..와 같은 오류가 발생했는지 확인했습니다.이 오류가 발생하는 이유도 걱정됩니다. –

답변

0

UpdateProgress Control Overview를 참조하십시오

UpdateProgress 컨트롤은 UpdatePanel 컨트롤에서 부분 페이지에 대한 업데이트를 상태 정보를 제공합니다.

UpdatePanel에서 일부 페이지 업데이트가 있습니까?

+0

예 부분 페이지 업데이트입니다. 프로세스가 진행 중일 때 updateprogress가 회전하는 것을 볼 수 있지만 Response.Write()에서는 중지되고 파일이 생성되지 않습니다. –

+0

예외가 있습니까? 이벤트 로그를 확인하십시오. –

+0

죄송합니다. 존, 아무런 증언도 없습니다. Response.Write()는 서버 측 코드에 있습니다. –

3

응답 객체 및/또는 기본 HTTP 요청 구조에 대한 오해에서 비롯된 것이라고 생각합니다.

귀하의 요청 : /buildXLS.aspx

서버 1 응답을 얻을 : 파일을 다운로드/* 헤더 정보 *// * 파일 데이터 */

서버 2 응답 : HTML 페이지/* hearder 정보를 */<DIV> 업데이트 ... <이/DIV >/* 파일 데이터 */

당신은 서버 1처럼 행동하려고하면, 다시 응답하지만 파일 자체에 대한 데이터 보낼 수 없습니다 (적절한 헤더). 서버 2처럼 작동하려고하면 XLS 대신 "text/html"전송을 나타내는 헤더가 작성되어 다운로드하는 페이지가 HTML로 취급되고 파일 데이터가 표시되지 않습니다. 실제로 어떤 이유로 든 응답을 플러시하면 더 이상 쓸 수 없습니다.

시나리오가 작동 할 수 있지만 두 개의 상호 작용하는 페이지 (페이지 1은 진행 메시지가 페이지 2의 새 창을 여는 것으로 나타남)를 볼 수 있습니다. 페이지 2는 XLS 빌드를 시작한 후 페이지 1을 숨기도록 트리거합니다. 완료되면 진행 메시지가 표시됩니다. 이제 동일한 응답 내에서 HTML 업데이트와 파일 다운로드를 모두 보내려고하기보다 보내려는 두 세트의 헤더와 일치하는 두 페이지가 있습니다.

+0

자세한 설명을 주셔서 감사합니다. 사용자 정의 진행률 표시 줄을 사용했습니다. –