gpt4 book ai didi

asp.net - 当我使用 ASP.NET 流式传输文件时,为什么 IIS7 会忽略我的内容类型 header ?

转载 作者:行者123 更新时间:2023-12-03 18:00:16 25 4
gpt4 key购买 nike

我有一个有两个页面的简单网站。一个显示文件列表,另一个在列表中单击文件时流式传输文件。生产 6 个月一切正常,但现在我必须将站点移至 Windows 2008/IIS7。我大部分时间都在工作,但是文件无法正确打开(在 Firefox 中),因为我的内容类型 header 被忽略了。在生产站点(IIS6)上, header 是(使用 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 还报告了协议(protocol)违规并说“内容长度不匹配:响应 header 要求 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 不太熟悉,并且一直在努力寻找更改各种设置的位置。我确实设法弄清楚了这两种托管管道模式,并通过切换到经典 .NET AppPool 修复了一些其他问题(集成在传输文件时抛出了各种错误)。

有没有办法告诉 IIS7 不要覆盖我的 ContentType header ,如果这是正在发生的事情?

最佳答案

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

这些额外的 2K 字节从何而来?它们里面有什么?

关于asp.net - 当我使用 ASP.NET 流式传输文件时,为什么 IIS7 会忽略我的内容类型 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2230516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com