ASP.NET HTTP 处理程序没有响应 -- 仅在特定机器上的特定 HTTP 客户端上

No response from ASP.NET HTTP Handler-- only on specific HTTP clients on specific machines

我至少有 ASP.NET 个处理程序 (.ashx) returns 一个 PDF 文件:

public void ProcessRequest(HttpContext context)
      {

         context.Response.ContentType = "application/pdf";
         context.Response.BinaryWrite(File.ReadAllBytes(context.Server.MapPath("~/files/GettingStarted.pdf")));

      }

      public bool IsReusable
      {
         get
         {
            return false;
         }
      }
   }

当我 运行 我的 Web 应用程序在 IIS Express 上时,该应用程序托管在 localhost:45050。如果我在我的主要开发机器上浏览到 localhost:45050/handler1.ashx,PDF 将按预期下载。如果我使用 DHC Chrome 扩展(HTTP 客户端)在 localhost:45050/handler1.ashx 上执行 HTTP GET,则会返回 HTTP 200 OK 响应代码以及二进制数据:

但是,如果我 运行 在 不同的机器 上执行完全相同的 ASP.NET 项目,我 运行 就会遇到奇怪的问题。在 localhost:45050 本地使用项目 运行ning,我仍然可以浏览到 Chrome/Firefox/IE 中的 localhost:45050/handler1.ashx 以下载文件。但是,当我使用 DHC 扩展在 localhost:45050/handler1.ashx 上执行 HTTP GET 时,没有任何响应!

我可以在这台备用计算机上通过 DHC 解析 localhost:45050(站点的主页)。服务器响应 200 OK 并生成登录页面。

但是在处理 returns 二进制内容的处理程序时,除了浏览器的 URL 栏之外,我无法使用任何 HTTP 客户端从服务器返回任何响应。 当独立的 HTTP 客户端不能时,浏览器如何能够解析 HTTP 响应?有谁知道这里可能发生什么?什么会导致行为在机器之间发生变化?我正在尝试处理 JavaScript 客户端中的响应,但我没有收到任何数据。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案在这里...

Best way to stream files in ASP.NET

...解决了问题。在某些服务器上,在单个调用中写入大文件似乎是禁忌。您必须手动分块响应。