加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

当我使用ASP.NET传输文件时,为什么IIS7会忽略我的内容类型标头?

发布时间:2020-12-16 07:38:54 所属栏目:asp.Net 来源:网络整理
导读:我有一个有两页的简单网站.一个显示文件列表,另一个文件在列表中单击时流式传输.生产6个月都很好,但现在我必须将网站移动到 Windows 2008 / IIS7.我有它主要工作,但文件无法正常打开(在Firefox中)因为我的内容类型标题被忽略.在生产站点(IIS6)上,标题是(使用
我有一个有两页的简单网站.一个显示文件列表,另一个文件在列表中单击时流式传输.生产6个月都很好,但现在我必须将网站移动到 Windows 2008 / IIS7.我有它主要工作,但文件无法正常打开(在Firefox中)因为我的内容类型标题被忽略.在生产站点(IIS6)上,标题是(使用Fiddler):

HTTP/1.1 200 OK
Date: Tue,09 Feb 2010 16:00:51 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment; filename="myfile__foo.pdf"
Content-Length: 236841
Cache-Control: no-cache,no-store
Pragma: no-cache
Expires: -1
Content-Type: application/octet-stream

但在测试IIS7服务器上我得到:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 236841
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment; filename="myfile__foo.pdf"

Fiddler还报告违反协议并说“内容长度不匹配:响应标头声称236841字节,但服务器发送了238378字节.”

我的代码看起来像这样:

Response.Clear();
            Response.AddHeader("Content-Disposition","attachment; filename="" + doc.DisplayFilename + "." + doc.FileExtension + """);
            Response.AddHeader("Content-Length",file.Length.ToString());
            Response.ContentType = "application/octet-stream";
            Response.TransmitFile(file.FullName);
            Response.End();

我一直试图解决这个问题几天.我对IIS7并不熟悉,并且很难找到改变各种设置的位置.我确实设法弄清了两种管理流水线模式,并通过切换到Classic .NET AppPool修复了一些其他问题(Integrated在传输文件时抛出了各种错误).

有没有办法告诉IIS7不要覆盖我的ContentType标头,如果这是发生了什么?

解决方法

您没有HttpModules修改请求/响应? web.config文件是否完全相同?

这些额外的2K字节来自哪里?它们里面有什么?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读