【问题标题】:Strange behavior of File method on Chrome BrowserChrome 浏览器上 File 方法的奇怪行为
【发布时间】:2018-01-31 06:23:00
【问题描述】:

在我的应用程序控制器的(一个)中定义了允许下载文件的操作/方法。

public FileResult PDFDownloadA(int attachementid)
{
    string filepath = "";
    byte[] pdfByte;

    SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.
                                            ConnectionStrings["Zalaczniki"].ConnectionString);
    conn.Open();
    using (var sqlquery = new SqlCommand("SELECT DDOKUMENT,DFILENAME from ATTACHEMENTS WHERE ID = @id", conn))
    {
        sqlquery.Parameters.AddWithValue("id", attachementid);
        using (var wynik = sqlquery.ExecuteReader())
        {
            wynik.Read();
            var blob = new Byte[wynik.GetBytes(0, 0, null, 0, int.MaxValue)];
            wynik.GetBytes(0, 0, blob, 0, blob.Length);
            filepath = wynik.GetString(1);
            pdfByte = blob;
        }
    }

    conn.Close();

    return File(pdfByte, "application/pdf", (filepath == "") ? "temp.pdf" : filepath);
}

还有问题部分:

在本地 IIS Express 上调试/运行时工作正常 - 文件有正确的名称并正确下载,但在我的生产服务器 (iis8.5) 上下载文件名称(为什么?)

“未知.pdf____________________________________________________________________________________________________________________________________________________________________________________________”

似乎是 Google-Chrome 的行为,在 Edge 上,Firefox 看起来更好。 不幸的是,Chrome 在公司中很常见,所以它会产生问题。 目前还没找到解决办法。

编辑:IIS mime 类型默认在 IIS 中设置:例如:application/pdf

【问题讨论】:

  • 从内存中,文件名设置在为文件提供服务的请求的响应标头中 - 您是否检查过它们以查看它们在不同浏览器中是否正确和/或相同。文件名末尾还有很多下划线吗?
  • 事情看起来很奇怪 - Firefox,Edge 工作正常

标签: c# asp.net-mvc google-chrome iis-8


【解决方案1】:

我自己解决了 - 当应用程序是 .net 4.5.2 但服务器仅安装了 .net 4.5 时会发生这种情况。其他功能(表单/查询等)在完美之前就可以使用。

现在它完美运行。也许它对某人有用。 感谢所有花时间研究这个主题的人。

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多