2010-07-31 4 views
2

보고 시스템에는 웹 페이지에서 사용 가능한 보고서 목록이 있습니다. 사용자가 보고서를 클릭하면 새 브라우저 창이 열리고 서버는 보고서 (winword 문서)를 준비한 다음 2-10 초 후에 다시 보냅니다. 핸들러에서하나의 HTTP 요청 당 여러 개의 콘텐츠 형식을 반환 할 수 있습니까?

코드는 다음과 같습니다

context.Response.AddHeader("Content-Disposition", 
    "attachment;filename=report.doc"); 
context.Response.BinaryWrite(reportDocument); 

나는이 새로운 창에 "기다려주십시오"보여주고 싶어요. html 콘텐츠를 즉시 준비 할 수 있습니까 ("기다려주십시오"). 다시 보내고 연결을 닫지 않고 시간을 많이 소비하는 보고서 준비를 계속할 수 있습니까?

http 요청 하나당 여러 콘텐츠 유형을 반환 할 수 없다면 어떻게 생각하세요?

미리 감사드립니다.

답변

2

하나의 HttpResponse는 sigle MIME 유형 만 가질 수 있습니다. winword 보고서 문서로 응답 할 서버를 차례로 호출 할 수있는 다른 창을 팝업 할 수 있습니다.

+0

우리가 (이론적으로) 할 수있는 것처럼 보입니다. http://bytes.com/topic/asp-net/answers/489209-transmit-file-html-response –

1

바이너리 내용으로 리디렉션되는 HTML로드 페이지를 만들 수 있습니다.

메타를 사용하여 수행 할 수 리디렉션

당신은 응답에 따라 내용의 2 개 종류를 보낼 수 없습니다 wikipedia

+0

멋지다! 그러나 그것은 비난받는 기술이라고 말했다. 믿을만한가요? –

+0

내가 그 방법과 자바 스크립트와 같은 사용하고했습니다 <스크립트 유형 = "텍스트/자바 스크립트"> self.location = 'HTTP : //xpto.com'을; –

+0

그것은 유감 그러나 메타 태그뿐만 아니라 자바 스크립트 접근 방식은 다운로드 보고서 파일이 때 새 브라우저 창을 팝업 없습니다 (Microsoft Word에서 열 하시겠습니까? 예/아니오). 내가 오래된 것을 선택하면 "잠시 기다려주십시오"라는 창이 화면에 나타나고 문서를 닫을 때 문서를 다운로드 할 순간을 결정할 능력이 없습니다. –

1

에서

<meta http-equiv="refresh" content="0;url=http://example.com/" /> 

더 많은 정보를 리디렉션합니다. 뭐야 do는 바이너리 콘텐츠에 대한 요청 (iframe과 같은)이 들어있는 "기다려주십시오"페이지를 렌더링합니다.

+0

다음과 같이 할 수 있습니다. http://bytes.com/topic/asp-net/answers/489209-transmit-file-html-response –

+0

@Andrew Florko, 링크가 HTTP에 대한 가능성은 일반적으로 asp.net에서 작동하는지 확실하지 않지만 흥미 롭습니다. 당신이 길을 찾을 수 있다면, 나는 예를보고 싶다. – SirDemon

+0

iframe의 문제점 - 보고서 문서가 iframe에로드되는 시간을 결정할 수 없습니다. IFrame이 winword에 대한 새 창을 표시하고 이전 창이 닫히지 않습니다. –

관련 문제