未声明纯文本文档的字符编码。在ASP.NET MVC中下载PDF

时间:2015-09-29 03:56:43

标签: c# asp.net-mvc asp.net-mvc-4 pdf asp.net-web-api

我在MVC项目中有一个链接,通过点击浏览器中下载的PDF链接,基于数字的检索部分由WebApi服务完成,该服务将PDF作为字节数组返回,在我的MVC中我下载PDF 。

这是在本地工作,即使webAPI是生产它正在工作。但是当我在服务器上传项目时,PDF下载无效。我在IE和Chrome中没有得到任何东西,但在Firefox中,我在控制台中得到了这个,我不确定这是不是为什么不显示PDF。

  

未声明纯文本文档的字符编码。如果文档包含US-ASCII范围之外的字符,则文档将在某些浏览器配置中使用乱码文本进行渲染。需要在传输协议中声明文件的字符编码,或者文件需要使用字节顺序标记作为编码签名。

这是我调用WebAPI并在ASP.NET MVC中下载PDF的代码:

    [HttpGet]
    public FileResult openPdf(string FileName, string Number)
    {
        try
        {
            string completeFileName = FileName + ".pdf";
            byte[] pdfByte = DownloadFile(completeFileName, RemoteRefNumber);
            return File(pdfByte, "application/pdf", completeFileName);
        }
        catch (Exception e)
        {
            return null;
        }
    }

    internal byte[] DownloadFile(string FileName, string Number)
    {
        string url = string.Empty;

        url = ConfigurationManager.AppSettings["RefTest"].ToString();

        try
        {
            string serverUrl = string.Format(url + "GetPdfName/GetPdfName?Number={0}", Number);

            var client = new System.Net.WebClient();

            client.Headers.Add("content-disposition", string.Format("inline;FileName=\"{0}\"", FileName));

            return client.DownloadData(serverUrl);
        }
        catch (Exception e)
        {
            return null;
        }
    }

1 个答案:

答案 0 :(得分:0)

它在本地正常工作的事实表明该问题是特定于服务器的问题。您可能想要思考服务器的安全设置,以防止下载到pdf。