2011-10-27 2 views
0
내가 코드의이 비트를 가지고

에 워드 문서를 작성합니다 : 그것은 모든 주요 브라우저에서 잘 작동하지만 IE8에 실패플라이

Response.AddHeader("Content-type", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); 
Response.AppendHeader("Content-disposition", "attachment; filename=Bio.docx"); 
Response.BinaryWrite(lawyerBio.MakeDoc()); 

.

인터넷 익스플로러에서 '존 스미스' '사이트 도메인'을 다운로드 할 수 없습니다 : IE8이하고있는 어떤

내가 페이지를 명중 처음으로, 그것은라는 팝업 오류가 있습니다.

Internet Explorer에서이 인터넷 사이트를 열지 못했습니다. 요청한 사이트 을 사용할 수 없거나 찾을 수 없습니다. 나중에 을 다시 시도하십시오.

내가 OK를 누른 다음 페이지를 새로 고치면 파일 이름 Bio.docx로 잘 다운로드됩니다. 매번 처음 실패하고 매번 두 번째로 작동합니다. 존 스미스 (John-Smith)는 현재 일어나고있는 페이지의 파일 이름이므로 처음부터 마치 내용 처리에 나타나지 않는 것처럼 보입니다.

IE8과 관련하여 알려진 문제가 있습니까? 아니면 내가 잘못하고 있다는 것을 알 수있는 것이 있습니까?

건배


업데이트

다음은이 파일을 전송 헤더입니다

 Array 
(
    [0] => HTTP/1.1 200 OK 
    [1] => Cache-Control: no-cache, no-store 
    [2] => Pragma: no-cache 
    [3] => Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document 
    [4] => Expires: -1 
    [5] => Server: Microsoft-IIS/7.5 
    [6] => Set-Cookie: website#sc_wede=1; path=/ 
    [7] => Set-Cookie: website#lang=en; path=/ 
    [8] => Set-Cookie: ASP.NET_SessionId=zabhwz55brq0ebfyjqn1c3bm; path=/; HttpOnly 
    [9] => Content-Disposition: attachment; filename=Bio.docx 
    [10] => X-AspNet-Version: 2.0.50727 
    [11] => Set-Cookie: SC_ANALYTICS_GLOBAL_COOKIE=323F079A90B545F39F8A6A9EB9B919DB; expires=Fri, 26-Oct-2012 17:44:57 GMT; path=/ 
    [12] => Set-Cookie: SC_ANALYTICS_SESSION_COOKIE=118B88825A054BA1BAF327B0561C3EBB,1; path=/ 
    [13] => X-Powered-By: ASP.NET 
    [14] => Date: Thu, 27 Oct 2011 17:44:57 GMT 
    [15] => Connection: close 
    [16] => Content-Length: 169581 
) 
+2

IE8이 "모든 주요 브라우저"로 집중되지 않음을 알 수 있습니다.) –

+0

SSL 또는 캐시 제어 헤더를 사용하고 있습니까? – Martey

+0

SSL이 없지만 FF Web Dev에서 헤더 사본을 가져와 원래 질문에 첨부합니다. –

답변

0

저는 캐시 제어 헤더라고 생각합니다. MSKB #323308을 참조하십시오. 제목에도 불구하고 파일 다운로드를 캐싱하지 않으면 인터넷 익스플로러에서도 SSL이 아닌 웹 사이트가 실패 할 수 있다고하는 온라인 게시물이 많이 있습니다. KB 문서에 나와있는 레지스트리 값 BypassHTTPNoCacheCheck을 추가하려고합니다. 작동하는 경우 응답에서 캐싱 헤더를 제거해야합니다.

+0

당신이 옳다고 생각하지만 내 클라이언트가 프로덕션 웹 서버에서 레지스트리를 엉망으로 만들 것이라고 확신 할 방법이 없습니다. 어떤 생각을 코드를 통해 해제하는 방법? –

+0

http://www.php.net/manual/en/function.header.php#99190에 따르면 Cache-Control 및 Pragma 헤더를 제거하는 것이 트릭을 수행해야합니다. – Martey

+0

이것이 답으로 받아 들여지는 이유는 이것이 실패한 이유이기 때문입니다.문제를 해결하는 방법은 훨씬 더 복잡하지만 IIS, C# 및 SiteCore 사이의 일들이 마음에 들었습니다.하지만 이는 다른 사람들이 검색하고 찾아야하는 문제가 아니라 내 솔루션에만 해당됩니다. 이. –

0

이 (대신 BinaryWrite의) 시도 (당신은 항상 교환 할 수 있습니다 파일이 디스크에 직접없는 경우 은 FileStream입니다.

  byte[] buffer = new byte[4096]; 
      using (Stream s = new FileStream(filePath, FileMode.Open, FileAccess.Read)) 
      { 
       int bytes; 
       while ((bytes = s.Read(buffer, 0, buffer.Length)) > 0) 
       { 
        Response.OutputStream.Write(buffer, 0, bytes); 
       } 
      } 
      Response.Flush(); 
+0

MemoryStream()을 사용하여이 작업을 시도했지만 여전히 동일한 결과가있었습니다. –

+0

각 호출시 문서 이름을 변경하여 캐싱 문제인지 확인하십시오. bio.docx 대신에'Guid.NewGuid() + ".docx"' – SliverNinja

+0

을 구현했습니다. IE8은 처음 실행될 때 john-smith로 표시되고 이후에는 guid.docx로 표시됩니다. –

관련 문제