ASP.NET MVC:在浏览器中显示pdf。适用于chrome,而不是ie或firefox

时间:2013-01-28 22:17:46

标签: asp.net-mvc pdf cross-browser content-disposition

我在Windows 8中运行VS 2012(在mac os x中托管的虚拟机上)。 C#中的MVC 3。

当用户选择文档时,它应该在新的浏览器窗口中打开。

目前: Chrome(v24.0.1312.56 m) - 根据需要在新窗口中打开 Firefox(v18.0.1) - 提示用户打开或保存。打开TWinUI(ugh)(和下载) IE(v10.0.9200.16466) - 提示用户打开或保存。在TWinUI中打开

这是代码:

    [HttpGet]
    public ActionResult Details(int id)
    {
        Document document = portalDB.Documents.Find(id);
        Response.Headers.Remove("Content-Disposition");
        Response.Headers.Add("Content-Disposition", "inline; filename=" + document.FileName);
        return File(System.IO.Path.Combine(Server.MapPath("~/App_Data/Documents"), document.FileName), "application/pdf");
    }

这是IE响应标题:

Key                     Value
Response                HTTP/1.1 200 OK
Cache-Control           private, s-maxage=0
Content-Type            application/pdf
Server                  Microsoft-IIS/8.0
X-AspNetMvc-Version     3.0
Content-Disposition     inline; filename=DeclarationAndByLaws.pdf
X-AspNet-Version        4.0.30319
X-SourceFiles           =?UTF-8?B?YzpcdXNlcnNcbWlrb1xkb2N1bWVudHNcdmlzdWFsIHN0dWRpbyAyMDEyXFByb2plY3RzXENlZGFyQXBwbGljYXRpb25cQ2VkYXJBcHBsaWNhdGlvblxQb3J0YWxcRGV0YWlsc1wx?=
X-Powered-By            ASP.NET
Date                    Mon, 28 Jan 2013 22:01:52 GMT

Firefox:无法获取标头,因为firebug没有通过下载提示继续存在。

1 个答案:

答案 0 :(得分:0)

return File更改为return Redirectreturn File表示在浏览器中刷新文件并结束响应。