ASP.NET Response.TransmitFile 与 Response.Redirect 的区别

作者:vkvi 来源:千一网络(原创) 日期:2018-5-8

路径支持

支持全路径,比如:Response.TransmitFile("D:\\cftea.txt")

支持相对路径,比如:Response.TransmitFile("cftea.mp4");

支持 ../,比如:Response.TransmitFile("../upload/cftea.com.mp4");

但是不支持 ../ 对到应用程序以外。也就是说并不是不支持 ../,而是不支持用 ../ 退到应用程序以外。这种情况只有用全路径了。

关于 Response.End

Response.TransmitFile 不像 Response.Redirect,Response.Redirect 默认跳转后就结束本网页后面代码的执行,而 Response.TransmitFile 不会,所以往往在 Response.TransmitFile 后面还要手工跟上 Response.End。

关于 Header

如果直接访问一个 txt 文件,浏览器得到的 header 类似如下 :

Content-Length →126
Content-Type →text/plain

而如果 Response.TransmitFile("cftea.txt"),浏览器得到的 header 类似如下 :

Content-Length →126
Content-Type →text/html

可以看出 Content-Type 不一样,这会导致一些问题,就是浏览器不能正确识别文件类型,正确指定了这个,浏览器才会正确使用自己的网页引擎、还是视频引擎、还是 PDF 引擎。否则即使遇到视频文件,浏览器也会当作普通文本将其内容呈现在网页上,而不是播放。

Content-Length 不必定义,由 IIS 自动管理。这玩意我们本身指定了也无效,因为我们无法预知 IIS 还会加多少 Header(这些 Header 的长度也要算在里面噢)。

还有一个 Header,偶尔有用。

一点不如意

我在测试中发现一个问题,当我 TransmitFile 一个视频文件,并用安卓代码访问它时,就会非常卡顿(这可是局域网啊),而且很快 IIS 就死掉了,但是如果用 Chrome 直接访问这个视频,Chrome 都可以非常流畅地播放这视频,而且不会把 IIS 搞死,不知道为什么。

你前面那位网友看了:Photoshop 中按顶分布、垂直居中分布、按底分布、按左分布、水平居中分布、按右分布

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
标题:必填
内容:
本站永远终止与捏造“罪名”不支付广告费的某度联盟合作。
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他