【发布时间】:2024-04-30 11:30:02
【问题描述】:
我们在 ASP.NET 站点中有一个页面,其中包含指向 .MHT 文件的链接,因此当用户单击该链接时,他应该能够在浏览器中查看 MHT 文件。
问题是它显示为空白,而 IIS 发送的标头是这样的:
HTTP/1.1 200 OK
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: application/octet-stream
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Wed, 18 Jan 2012 18:45:19 GMT
我们在 IIS 上已经按照默认设置正确配置了 MIME 类型,如下所示:
.mht message/rfc822
我们注意到,如果我们通过我们机器中的文件系统打开文件,IE 会正确显示它,所以问题出在 IIS 随文件一起发送的标头上(我们假设)。
知道为什么 IIS 发送此标头会阻止我们正确显示 MHT 文件吗?有什么解决办法吗?
非常感谢!
更新
我们现在想到了几种解决方法:请参阅我的回答。
*谢谢大家!
【问题讨论】:
-
感谢 Tomas,但该问题中显示的情况与我们的情况不同。我们不是从 ASP.NET 代码交付文件,它是指向位于我们服务器中的 MHT 文件的直接链接,而 IIS 是单独交付文件的人。问题如前所述:IIS 发送的 Content-Type 不正确,因此我们也无法将其设置为 multipart/related 作为该问题的答案。谢谢。
-
但是您可以将扩展映射到自定义处理程序,当 IIS 无法完成工作时......
-
再次感谢,是的,我已经用我们想到的三种解决方法更新了问题,我们将使用 ISAPI 过滤器,但我们会将 Content-Type 设置为 text/html 而不是多部分/相关。
-
为了清楚起见,您必须发送正确的内容类型标头,否则 MHT 内容将无法正常工作。这是一项安全功能。
标签: asp.net internet-explorer iis mime-types