.Net MVC文件结果png文件损坏,关闭一个字节
我们有一个图像文件下载操作。 代码是.Net MVC文件结果png文件损坏,关闭一个字节,.net,asp.net-mvc-3,mime-types,.net,Asp.net Mvc 3,Mime Types,我们有一个图像文件下载操作。 代码是 public virtual FileResult Attachment(Guid Id) { ...code for attachment.. Response.AddHeader("content-disposition", "attachment; filename=" + attachment.FileName); Response.AddHeader("con
public virtual FileResult Attachment(Guid Id)
{
...code for attachment..
Response.AddHeader("content-disposition", "attachment; filename=" + attachment.FileName);
Response.AddHeader("content-type", attachment.ContentType);
Response.AddHeader("cache-control", "must-revalidate");
return File(attachment.Content, attachment.ContentType);
}
当我们测试此操作时,总是会得到损坏的文件。我将损坏的文件与原始用户notepad++进行了比较,发现文件中添加了一个新行字符。我删除了记事本++中的新行,图像已修复
我们检查了附件的内容,我们确信内容是正确的
我们正在运行.NETMVC3。png的内容类型是“image/png”检查在添加自定义标题之前(或之后)响应中已经填充了哪些其他标题。这可能是因为您得到了一些无关的标题导致了问题 它可能像打电话一样简单 诸如LiveHTTP Headers firefox插件之类的工具可能也会有所帮助。对结果(即fiddler2.com)进行Fiddler处理,并查看标题和结果。您也可以从那里保存结果并测试文件。新行是在开头还是结尾?如果是开头,则可能是标题。如果是在末尾,您是否运行了任何ActionFilters,它可能会添加一个空结果(或者您认为是这样),而实际上是一个添加的新行?用另一个文件测试它-相同的结果
如果可能,在另一个系统上进行测试-结果相同?什么是附件内容??如何设置?验证是否正确?是的,验证是否正确。当您进行测试时,您是作为单元测试进行测试,还是直接在web浏览器中进行测试?我两者都做了。单元测试并在控制器中插入一段代码以强制写入文件系统。这两个结果都是正确的。谢谢,在BaseController的override OnActionExecuting方法中发现了问题。它在任意位置向输出插入新行。应该是DailyWTF的好候选人:)