Asp.net mvc 3 生产与开发服务器内容配置文件名编码

Asp.net mvc 3 生产与开发服务器内容配置文件名编码,asp.net-mvc-3,google-chrome,content-disposition,Asp.net Mvc 3,Google Chrome,Content Disposition,我正在使用asp.net mvc3,在同一浏览器(Chrome 22)中下载文件。以下是控制器代码: [HttpPost] public ActionResult Uploadfile(HttpPostedFileBase file)//HttpPostedFileBase file, string excelSumInfoId) { ... return File( result.Output, "application/vnd.ms-excel

我正在使用asp.net mvc3,在同一浏览器(Chrome 22)中下载文件。以下是控制器代码:

[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
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
我从生产服务器下载了一个名为控制器操作+正确扩展名“Uploadfile.xls”的文件,这是错误的

响应:

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
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文件相同


为什么同一浏览器的文件名编码不同?web.config中是否有任何类型的默认设置在我缺少的计算机上是不同的?

最可能的原因似乎是服务器确实看到了不同的用户代理头字段


尽管如此,第二个响应对于任何浏览器都不正确,您应该向Microsoft报告该问题。

开发服务器正在运行.NET 4,而生产服务器正在运行.NET 4.5。MVC框架包含一个启发式方法,用于确定是否需要将RFC6266用于内容处置头,虽然此启发式方法在.NET 4上正常工作,但在.NET 4.5上无法正常工作。最终的结果是内容处置头被损坏,正如您在本实例中看到的那样


最简单的方法可能是将应用程序升级到MVC4。该版本的框架包含一个不同的启发式算法,它更健壮,应该可以在.NET 4和.NET 4.5上正常工作。

您是如何发现prod在.NET 4.5上运行的?(我检查了注册表,你是对的;)(几个月前第一次报告这个bug时,我负责分析它。因此,我想这会有所帮助。:)在本地安装了MVC 3和.NET 4.5之后,我就遇到了这个问题。很高兴知道。谢谢李维!也有这个问题。MVC3,仅使用特定长度的西里尔文文件名复制。花了一段时间才弄明白如何正确地用谷歌搜索它!谢谢你,李维。