2012-04-13 3 views
1

PDF 파일을 반환하는 MVC 응용 프로그램이 있습니다.IE8에서 PDF 파일을 다운로드 할 수 없습니다.

public FileStreamResult GetDocument(int id) 
{ 
    return File(stream, "application/octet-stream", documentsModel.Name); 
} 

두 개의 테스트 서버가 있습니다. 하나는 비공개이고 다른 하나는 공개입니다. 민간에서

나는 문서를 다운로드 할 수 있습니다 내가 얻을 :

GET /Documents/GetDocument/3576 HTTP/1.1 
Accept: */* 
Accept-Language: en-GB 
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; BRI/2) 
Accept-Encoding: gzip, deflate 
Host: appserver 
Connection: Keep-Alive 
Cookie: ASP.NET_SessionId=vgzn4qkelxdmic3nbaqftsxd; .FidesAuthCookie=BF08E0DCAAA54D7D78AB6BD30D5ECA523C045F9B401B10693B6CE57D7D4C677C0908E24D92511DC75A487D6CAE6DD780AA8B4419A5A5D9258A4985AF6870D3AD1A0B3C01B8A620A1E14FEDDE298CCE255AE4B4C2F76D2635B8C5DF332AF19AAB; dynatree-active=3576; dynatree-focus=; dynatree-expand=496%2C603%2Cfolder_622; dynatree-select= 


HTTP/1.1 200 OK 
**Cache-Control: private, s-maxage=0** 
Content-Type: application/octet-stream 
Server: Microsoft-IIS/7.5 
Set-Cookie: .FidesAuthCookie=BF08E0DCAAA54D7D78AB6BD30D5ECA523C045F9B401B10693B6CE57D7D4C677C0908E24D92511DC75A487D6CAE6DD780AA8B4419A5A5D9258A4985AF6870D3AD1A0B3C01B8A620A1E14FEDDE298CCE255AE4B4C2F76D2635B8C5DF332AF19AAB; expires=Fri, 13-Apr-2012 13:31:05 GMT; path=/ 
X-AspNetMvc-Version: 3.0 
Content-Disposition: attachment; filename=test.pdf 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Fri, 13 Apr 2012 13:01:04 GMT 
Content-Length: 49613 

을 내 공개 서버에서 내가

GET /Documents/GetDocument/97 HTTP/1.1 
Accept: */* 
Accept-Language: en-GB 
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; BRI/2) 
Accept-Encoding: gzip, deflate 
Host: beta.qi-care.nl 
Connection: Keep-Alive 
Cookie: ASP.NET_SessionId=h3utp0bfu4zwhqysntame3we; dynatree-active=97; dynatree-focus=; dynatree-expand=4%2Cfolder_10; dynatree-select=; .FidesAuthCookie=F0DED3D98BF4115C910B0A29EC2C809902B49F15518952DFA78DDB4358B5F0C1A9EDAFB50DD0CA761B433ED68034C2539ABCCDA0C50FF5EEEE3573D3C77E550416CDB24B302C9EB831AC597040E6D255E9B582E8A29D5FC03454F2A0742ECC9DEC61070091F9A66D1C3FC7F9CA10C1B8BB9B5109CB613C98AEE32AFE5A0F8A28 



HTTP/1.1 200 OK 
**Cache-Control: private, no-cache="Set-Cookie", s-maxage=0** 
Content-Type: application/octet-stream 
Server: Microsoft-IIS/7.5 
Set-Cookie: .FidesAuthCookie=F0DED3D98BF4115C910B0A29EC2C809902B49F15518952DFA78DDB4358B5F0C1A9EDAFB50DD0CA761B433ED68034C2539ABCCDA0C50FF5EEEE3573D3C77E550416CDB24B302C9EB831AC597040E6D255E9B582E8A29D5FC03454F2A0742ECC9DEC61070091F9A66D1C3FC7F9CA10C1B8BB9B5109CB613C98AEE32AFE5A0F8A28; expires=Fri, 13-Apr-2012 13:19:35 GMT; path=/ 
X-AspNetMvc-Version: 3.0 
Content-Disposition: attachment; filename=test.pdf 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Fri, 13 Apr 2012 12:49:35 GMT 
Content-Length: 49613 

을 얻고 내가 어떤 이유로 오류

http://support.microsoft.com/kb/323308

수 , 나는이 두 서버에서 두 가지 다른 응답을 받았습니다. 하지만 클라이언트가 우리는 직장에서이 문제를 직면

To resolve this issue in Internet Explorer 7 and in Internet Explorer 8, follow these steps: 
Start Registry Editor. 
For a per-user setting, locate the following registry key: 
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings 
For a per-computer setting, locate the following registry key: 
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings 
On the Edit menu, click Add Value. 
To override the directive for HTTPS connections, add the following registry value: 
    "BypassSSLNoCacheCheck"=Dword:00000001 
To override the directive for HTTP connections, add the following registry value: 
    "BypassHTTPNoCacheCheck"=Dword:00000001 
Quit Registry Editor. 

Microsoft

답변

0

레지스트리를 변경해야한다는 Microsoft 지원에 발견, 그것은, 즉 제공 (우리의 경우 IE8-에서) 인터넷 익스플로러의 버그로 밝혀졌다 SSL로 파일을 다운로드하려고 할 때 오류가 발생합니다 (https에 있습니까?). 문제는 서버가 브라우저에 캐싱을 비활성화하는 http 헤더를 보내는 경우 오류가 발생한다는 것입니다. 귀하의 경우 maxage=0Cache-Control: no cache과 같습니다.

솔루션 서버 측에서는이 헤더를 덮어 써서 응답을 캐시하도록 IE8에 알려야합니다 (예 : Cache-Control: private). 일부 애플리케이션 서버 (예 : Websphere Application Server)는 쿠키가 설정 될 때 자동으로 no-cache="Set-Cookie"을 추가합니다.

마지막으로,이 문제를 해결 다른 해결책, 해당되는 경우는,하지만 브라우저에서 클라이언트 측을 적용 할 방법 1에서

보기 : http://support.microsoft.com/kb/2549423

관련 문제