문제

이 코드는 항상 내 ASPX 페이지를 두 번로드합니다. 그리고 이것은 Autoeventwireup과 관련이 없습니다.

Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "inline;filename=data.pdf");
Response.BufferOutput = true;
byte[] response = GetDocument(doclocation);
Response.AddHeader("Content-Length", response.Length.ToString());
Response.BinaryWrite(response);
Response.End();

이 코드는 더미 값을 하드 코딩 할 때 내 페이지를 한 번만로드합니다.

Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "inline;filename=data.pdf");
Response.BufferOutput = true;
byte[] response = new byte[] {10,11,12,13};
Response.AddHeader("Content-Length", response.Length.ToString());
Response.BinaryWrite(response);
Response.End();

또한 web.config 파일에서 양호한 측정에 대한 요청 길이를 늘 렸습니다.

<httpRuntime executionTimeout="180" maxRequestLength="400000"/>

아직도 아무것도 없습니다. 누구든지 내가하지 않는 것을 본 적이 있습니까?

도움이 되었습니까?

해결책

이것에 대한 해결책을 아직 찾았습니까? 나는 같은 문제를 가지고 있습니다. 내 코드는 당신의 거울입니다. 주요 차이점은 내 PDF가 iframe에서 호스팅된다는 것입니다.

내가 찾은 흥미로운 단서 : 단어를 되돌리면 Doc은 한 번만로드됩니다. pdf는 두 번로드됩니다. 또한 다른 클라이언트 데스크탑과는 다른 동작을 보았습니다. 나는 Adobe 버전이 그것과 관련이있을 수 있다고 생각합니다.

업데이트:

제 경우에는 httpcaceceability를 Nocache로 설정했습니다. 이를 확인할 때 클라이언트 비 클라이언트 캐시 옵션 중 하나는 PDF의 이중 다운로드를 유발합니다. 전혀 설정하지 않거나 (기본값으로 개인) 만 명시 적으로 설정하지 않으면 개인 또는 공개로 명시 적으로 설정하면 문제가 해결되며 다른 모든 설정은 문서의 이중로드를 복제했습니다.

다른 팁

GetDocument(doclocation);

이 방법이 어떻게 든 리디렉션 코드를 반환 할 수 있습니까? 아니면 동적 콘텐츠의 Iframe 또는 IMG 일 수 있습니까?

그렇다면:

일반적으로 URL 응답으로 인해 제어가 두 번 호출 될 수 있습니다. 먼저 콘텐츠를 렌더링합니다. 그 후 브라우저는 실제로 생성되는 동적 컨텐츠 인 태그 (iframe, img) 소스를 다운로드하려고합니다. 따라서 웹 서버에 또 다른 요청을합니다. 이 경우 다른 viewstate가있는 다른 페이지 객체는 다른 요청이기 때문에 생성되었습니다.

빠른 추측 : 페이지 수명주기 의이 단계에서 getDocument ()가 포함 된 클래스가 이미 쓰레기 수집을 거쳤을 수 있습니까? ASP.NET 작업자 프로세스는 해당 메소드를 다시 읽으려면 페이지를 다시로드해야합니까?

page_load에서 시도해 보셨습니까? GetDocument가 정적 방법 인 이유는 무엇입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top