How to add Headers in HTTPContext Response in ASP.NET MVC 3?
本文关键字:in NET MVC ASP HTTPContext to add Headers How Response | 更新日期: 2023-09-27 18:00:53
我的页面中有一个下载链接,指向我根据用户请求生成的文件。现在我想显示文件大小,这样浏览器就可以显示还有多少要下载。作为一种解决方案,我想在请求中添加一个Header会起作用,但现在我不知道该怎么做
这是我的试用代码:
public FileStreamResult DownloadSignalRecord(long id, long powerPlantID, long generatingUnitID)
{
SignalRepository sr = new SignalRepository();
var file = sr.GetRecordFile(powerPlantID, generatingUnitID, id);
Stream stream = new MemoryStream(file);
HttpContext.Response.AddHeader("Content-Length", file.Length.ToString());
return File(stream, "binary/RFX", sr.GetRecordName(powerPlantID, generatingUnitID, id) + ".rfx");
}
当我检查fiddler时,它没有显示Content-Length标题。你们能帮我吗?
尝试使用
HttpContext.Response.Headers.Add("Content-Length", file.Length.ToString());
尝试HttpContext.Current.Response.AppendHeader("Content-Length", contentLength);
你能试试下面的代码吗?
public FileStreamResult Index()
{
HttpContext.Response.AddHeader("test", "val");
var file = System.IO.File.Open(Server.MapPath("~/Web.config"), FileMode.Open);
HttpContext.Response.AddHeader("Content-Length", file.Length.ToString());
return File(file, "text", "Web.config");
}
"它在我的机器上工作">
我尝试过不使用Content-length
标头,Fiddler无论如何都会报告一个内容长度标头。我认为不需要。
这应该可以解决问题,因为我认为没有必要使用FileStreamResult
,而您可以直接使用byte[]
。
public FileContentResult DownloadSignalRecord(long id, long powerPlantID, long generatingUnitID)
{
SignalRepository sr = new SignalRepository();
var file = sr.GetRecordFile(powerPlantID, generatingUnitID, id);
HttpContext.Response.AddHeader("Content-Length", file.Length.ToString());
return File(file, "binary/RFX", sr.GetRecordName(powerPlantID, generatingUnitID, id) + ".rfx");
}
请注意FileContentResult返回类型。
不确定还有什么问题,但内容长度应该是二进制文件的大小,而不是字符串长度。