Csharp/C#教程:正确使用Asp.Net Response.TransmitFile和Response.End()分享


正确使用Asp.Net Response.TransmitFile和Response.End()

这段代码的正确用法是什么?

httpContext.Response.AddHeader("Content-Disposition", "inline; filename=" + HttpUtility.UrlPathEncode(fileName)); httpContext.Response.ContentType = "image/png"; httpContext.Response.AddHeader("Content-Length", new FileInfo(physicalFileName).Length.ToString()); httpContext.Response.TransmitFile(physicalFileName); httpContext.Response.Flush(); httpContext.Response.End(); //Use it or not? 

使用.Flush().End()真的很好吗?

根据这个你永远不应该使用Response.End() (仅在错误或黑客情况下)

但在一些答案中.End()被重新修改……?

喜欢这篇文章。

所以使用Response.End是否合适?

我添加了这个,所以人们不会陷入错误的接受响应: 在传输文件后,大多数情况下可能需要Response.End()。

如果您使用TransmitFile,或者您决定直接写入输出流,则无关紧要,只需要确保在发送文件后没有人可以写入单个字节。

这一点特别重要,因为在某些时候会在IIS上安装filter,全局asax EndRequest上的代码,或者调用代码然后执行更多操作的开发人员,其中任何一个最终都会在输出流中添加更多内容没有你注意到它,它将破坏你传输的文件内容。 – CompleteRequest不会为您节省费用,因为它允许在您调用后在响应中添加更多内容。

Response.End()是保证没有其他未来代码更改的唯一方法,或IISfilter将按预期操作您的响应。

根据Thomas Marquardt的说法,你永远不应该使用Response.End() 。 相反,您应该使用Context.ApplicationInstance.CompleteRequest() 。 查看本文 ,它来自Microsoft KB,建议使用Application.CompleteRequest()而不是Response.End()

上述就是C#学习教程:正确使用Asp.Net Response.TransmitFile和Response.End()分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1026194.html

(0)
上一篇 2022年1月9日
下一篇 2022年1月9日

精彩推荐