Chrome 浏览器上 File 方法的奇怪行为
Strange behavior of File method on Chrome Browser
在我的应用程序的(一个)控制器中定义了允许下载文件的action/method。
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);
}
和问题部分:
当 debugging/runnning 在本地 IIS Express 上工作正常 - 文件有正确的名称并正确下载,但在我的生产服务器 (iis8.5) 上,文件下载名称为(为什么?)
"unknown.pdf____________________________________________________________________________________________________________________________________________________________________________________________".
似乎是Google-Chrome的行为,在Edge、Firefox上看起来更好。
不幸的是,Chrome 在公司中经常使用,所以它会产生问题。
目前还没找到解决办法
编辑:IIS mime 类型默认设置在 IIS 中:例如:application/pdf
无论如何我自己都解决了 - 当应用程序是 .net 4.5.2 但服务器只安装了 .net 4.5 时会发生这种情况。另一个功能(forms/queries 等)在完美之前工作。
现在可以完美运行了。也许它对某人有用。
感谢所有花时间研究这个主题的人。
在我的应用程序的(一个)控制器中定义了允许下载文件的action/method。
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);
}
和问题部分:
当 debugging/runnning 在本地 IIS Express 上工作正常 - 文件有正确的名称并正确下载,但在我的生产服务器 (iis8.5) 上,文件下载名称为(为什么?)
"unknown.pdf____________________________________________________________________________________________________________________________________________________________________________________________".
似乎是Google-Chrome的行为,在Edge、Firefox上看起来更好。 不幸的是,Chrome 在公司中经常使用,所以它会产生问题。 目前还没找到解决办法
编辑:IIS mime 类型默认设置在 IIS 中:例如:application/pdf
无论如何我自己都解决了 - 当应用程序是 .net 4.5.2 但服务器只安装了 .net 4.5 时会发生这种情况。另一个功能(forms/queries 等)在完美之前工作。
现在可以完美运行了。也许它对某人有用。 感谢所有花时间研究这个主题的人。