【发布时间】: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