gpt4 book ai didi

iis - 在 IIS 7.5 中传送 PDF 文件的问题

转载 作者:行者123 更新时间:2023-12-04 23:09:49 25 4
gpt4 key购买 nike

这是一个非常奇怪的问题 - 任何想法/帮助/提示将不胜感激。

我们的网络应用程序使用以下代码将 PDF 文件流式传输到浏览器

byte [] fileBytes = GetTheFileBytes();
string contentType = "application/pdf";

context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ContentType = contentType;
context.Response.AddHeader("Content-Length", fileBytes.Length.ToString());
context.Response.AddHeader("Content-Type", contentType);

MemoryStream outputStream = new MemoryStream(fileBytes);
outputStream.WriteTo(context.Response.OutputStream);
context.Response.Flush();

这看起来很无害并且在 IIS 6 和 IIS 7 中工作正常:如果用户安装了 PDF 插件(adobe 或 foxit 等),那么 PDF 将显示在他们的浏览器中。

但是,在 IIS 7.5(Windows 7 和 Win 2008 R2)中,Foxit 插件在 IE 中挂起,Adobe 插件在 IE 和 FF 中挂起。即如果我输入
http://iis70Host/application/getPDF.aspx一切都很好但是 http://iis75Host/application/getPDF.aspx在同一个浏览器挂起。

我向完全相同的浏览器提供完全相同的 PDF 文件,并且两个 Web 服务器都在 2.0 框架中运行该应用程序。

当它们崩溃时,我还没有设法从这两个插件中获得有用的错误消息。

我认为 IIS 7.5 正在以某种方式损坏文件(因为客户端浏览器和插件是相同的)-但我发现很难想象 Web 服务器如何出错(它只是在之后将二进制流传输到客户端)全部)。
  • 谁能想到为什么 IIS 7.0 和 7.5 的行为会有所不同?
  • 有谁知道如何从 Adob​​e 或 Foxit 插件中获取更多调试信息? (如果我能得到他们崩溃的原因,那么也许它会给我一个关于服务器出了什么问题的线索)。
  • 诊断问题的任何其他提示?


  • 关注
  • 我使用 wget 捕获了这些文件,它们是相同的。
  • 我已经使用 fiddler 查看了请求和响应 header ,它们在响应 header (或请求 header 中的 Accept-range)中没有明确提及“范围”,这表明这是多部分请求的可能性mwalker 建议的问题。
  • 无论如何,我继续安装了 MS 修补程序,但这对情况没有帮助(因此
    我更确定这不是“多部分问题”)。

  • 所以我想我又要乞求更多关于可能出什么问题的想法了!

    以下是 fiddler 在访问运行 IIS 7.5、7.0 和 6 的主机时记录的请求和响应 header

    IIS 7.5
    GET /eco/dataFile.aspx?data=147098&record=9754 HTTP/1.1
    Host: chrisf
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-gb,en;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive
    Referer: http://chrisf/eco/embeddedMedia.aspx?record=9754&search=true
    Cookie: CC=test;

    HTTP/1.1 200 OK
    Cache-Control: private
    Content-Length: 114340
    Content-Type: application/pdf
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 2.0.50727
    Persistent-Auth: true
    X-UA-Compatible: IE=8
    Date: Mon, 26 Jul 2010 12:47:46 GMT

    IIS 7.0
    GET /eco/dataFile.aspx?data=147098&record=9754 HTTP/1.1
    Host: chris1
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-gb,en;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive
    Referer: http://chrisf/eco/Test1.htm
    Cookie: CC=test;

    HTTP/1.1 200 OK
    Cache-Control: private
    Content-Length: 114340
    Content-Type: application/pdf
    Server: Microsoft-IIS/7.0
    X-AspNet-Version: 2.0.50727
    X-UA-Compatible: IE=8
    Date: Mon, 26 Jul 2010 12:17:15 GMT

    IIS 6
    GET /mi/dataFile.aspx?data=147098&record=9754 HTTP/1.1
    Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
    Referer: http://mi-dev/mi/embeddedMedia.aspx?record=9754&search=true
    Accept-Language: en-GB
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)
    Accept-Encoding: gzip, deflate
    Host: mi-dev
    Connection: Keep-Alive
    Cookie: CC=test;
    Authorization: Negotiate YII...

    HTTP/1.1 200 OK
    Date: Mon, 26 Jul 2010 10:37:47 GMT
    Server: Microsoft-IIS/6.0
    MicrosoftOfficeWebServer: 5.0_Pub
    X-Powered-By: ASP.NET
    WWW-Authenticate: Negotiate oYGg...
    X-AspNet-Version: 2.0.50727
    Content-Length: 114340
    Cache-Control: private
    Content-Type: application/pdf

    最佳答案

    好的。一位同事终于明白了这一点。

    {这些论坛上的任何人都无法对此提供帮助,因为看起来我对问题的描述有误,并且没有说 PDF 插件位于 IFrame 中(一条对于查找至关重要的信息)原因)。但是还是感谢您的尝试:) }

    无论如何,这里的问题实际上是什么: -

    如果 PDF 插件在 IFrame 中 标题X-UA-Compatible: IE=8存在,然后插件在 IE 中崩溃。

    我们的解决方案只是删除 X-UA-Compatible: IE=8标题。这个标题是在一段时间内作为快速修复来修复一些 IE 渲染问题的,但我们已经重新编写了 HTML + CSS,现在它是多余的)。它像这样包含在 web.config 中


    <自定义标题>
    <清除/>




    我们在 IIS6 上没有看到这个问题的原因似乎是 IIS 6 不尊重这一点,只是没有发送 header !

    <借口>

    我 99% 肯定这是问题所在:还有 1% 的怀疑是因为他无法在 Firefox 上重现该问题(这是一个 IE 唯一的问题),而他发现他可以在 IIS 7 和 7.5 上重现该问题。

    但是我坐下来看着他重现错误并修复它,所以要么a)我的旧机器被诅咒要么b)当我开始看错误并感到困惑时,我只是个白痴。你决定。我没有提到插件在 IFrame 中,因为我错误地认为这是一个无关的细节。

    [我第一次试验这个错误的机器已经变成了一个构建服务器,所以我不能回到那个地方看看我是否可以在 Firefox 上重现]

    关于iis - 在 IIS 7.5 中传送 PDF 文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310858/

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