2012-10-18 2 views
3

동일한 브라우저 (Chrome 22)에서 asp.net mvc3 파일을 다운로드하고 있습니다. 내가 올바른 이름 "Суммирование_2012.10.18-13.36.06.xls"으로 프로그래밍 생성 된 파일을 다운로드 내 dev에 시스템에서생산 vs dev 서버 내용 처리 파일 이름 인코딩

[HttpPost] 
public ActionResult Uploadfile(HttpPostedFileBase file)//HttpPostedFileBase file, string excelSumInfoId) 
{ 
    ... 
    return File(
     result.Output, 
     "application/vnd.ms-excel", 
     String.Format("{0}_{1:yyyy.MM.dd-HH.mm.ss}.xls", "Суммирование", DateTime.Now)); 
} 

다음은 컨트롤러 코드입니다.

응답 :

Content-Disposition:attachment; filename*=UTF-8''%D0%A1%D1%83%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_2012.10.18-13.36.06.xls 
Content-Length:203776 
Content-Type:application/vnd.ms-excel 
Date:Thu, 18 Oct 2012 09:36:06 GMT 
Server:ASP.NET Development Server/10.0.0.0 
X-AspNet-Version:4.0.30319 
X-AspNetMvc-Version:3.0 

그리고 프로덕션 서버에서 내가 잘못 컨트롤러의 액션 + 올바른 확장 "Uploadfile.xls"의 이름으로 파일을 다운로드.

응답 :

Content-Disposition:attachment; filename="=?utf-8?B?0KHRg9C80LzQuNGA0L7QstCw0L3QuNC1XzIwMTIuMTAuMTgtMTMuMzYu?=%0d%0a =?utf-8?B?NTUueGxz?=" 
Content-Length:203776 
Content-Type:application/vnd.ms-excel 
Date:Thu, 18 Oct 2012 09:36:55 GMT 
Server:Microsoft-IIS/7.5 
X-AspNet-Version:4.0.30319 
X-AspNetMvc-Version:3.0 
X-Powered-By:ASP.NET 

의 Web.config 파일이 두 시스템에 동일합니다.

동일한 브라우저에서 filename이 다른 방식으로 인코딩되는 이유는 무엇입니까? web.config에 누락 된 컴퓨터에서 다른 기본 설정이 있습니까?

답변

3

dev 서버는 .NET 4를 실행하고 프로덕션 서버는 .NET 4.5를 실행합니다. MVC 프레임 워크에는 Content-Disposition 헤더에 RFC 6266을 사용해야하는지 여부를 결정하는 경험적 방법이 포함되어 있으며이 경험적 방법은 .NET 4에서 올바르게 작동하지만 .NET 4.5에서는 올바르게 작동하지 않습니다. 결과적으로이 경우 Content-Disposition 헤더가 엉망이됩니다.

가장 쉬운 조치는 응용 프로그램을 MVC 4로 업그레이드하는 것입니다.이 프레임 워크의 버전은 .NET Framework 4와 .NET 4.5에서보다 강력하고 올바르게 작동하는 다른 경험적 방법을 포함하고 있습니다.

+0

prod가 .net 4.5 이상에서 실행되고 있음을 어떻게 알 수 있습니까? (나는 레지스트리를 점검했다. 당신이 옳았다)) – rgripper

+0

나는 몇 달 전에 처음으로보고되었을 때이 버그를 분석했다. 그래서 도움이된다고 생각합니다. :) – Levi

+0

MVC 4로 업그레이드하면 감사합니다. Levi. – rgripper

0

대부분의 이유는 서버가 실제로 다른 User-Agent 헤더 필드를 보는 것 같습니다.

즉, 2 차 응답은 모든 브라우저에서 올바르지 않으며 해당 문제를 Microsoft에보고해야합니다.

관련 문제