2011-11-03 3 views
0

for 루프에서 Page.Response.Write ("")를 사용하여 많은 양의 Excel 컨텐츠 데이터를 브라우저로 보내고 있습니다.asp.net 응답 이중 컨텐트 유형

루프를 시작하기 전에 reponse.context 속성의 conetnt 유형을 "ms-excel"로 변경합니다.

for 루프 동안 예외가 발생하면 브라우저에 HTML 시작 스크립트 블록을 등록하여 브라우저에 오류 메시지를 팝업으로 표시하려고합니다. 글 쓰기 전에 나는 content type을 text/html로 바꾼다. 하지만 HTTP 헤더를 보낸 후에 콘텐츠 형식을 변경할 수 없다는 오류가 발생합니다.

for 루프 중에 발생한 오류에 대해 브라우저에 알리는 방법은 무엇입니까? 동일한 브라우저 탭에 하나 이상의 응답을 추가 할 수 있습니까? 그런데 지금은 ASP.NET AJAX를 사용하고 싶지 않습니다.

답변

0

컨텍스트 유형을 변경하기 전에 Response.ClearHeaders();을 시도 했습니까?

Response.Write가 문제를 일으키기 때문에 문제가 해결되지 않으면 콘텐츠 형식을 결정하고 헤더를 설정하기 전에 문자열 작성 경로를 생각해보십시오.

  • 루프는 콘텐츠 물마루 그것은 당신의 오류를 쓰기 같이 컨텐트 유형을 떠나, MS-엑셀에 StringBuilder에
  • 오류없이하는 경우, 설정 컨텐트 유형에 추가하고 오류가 있으면 SB
  • 을 쓰기 필요한 경우 메시지.
+0

ClearHeaders()는 저에게 잘 맞습니다. 하지만 당신의 다른 제안, 나는 SB에있는 모든 데이터를 캐싱하는 것이 매우 큰 데이터의 경우에 좋다고 생각하지 않는다. 그것은 OutOfMemory 예외를 던질 것이다. 감사. –

0

Page.Response.Write ("")는 브라우저에 데이터를 보냅니다. 그렇게 할 때 브라우저는 올바른 것으로 렌더링하기 위해 가져 오는 콘텐츠의 유형을 알아야합니다. 이미 어떤 종류의 콘텐츠를 가지고 있는지 브라우저에 말한 경우 (그리고 그렇지 않은 경우에도 Response.Write로 이미 데이터를 감추고있다. 텍스트/html로 생각되는 기본값을 사용하게된다) 다시 가져. 당신이 고객에게하는 말은 무엇이든간에 당신은 그것을 되돌릴 수 없습니다. 문제를 해결하는 방법은 Doozer가 제안한 답변을 캐시하는 것입니다.

/티비