我有一个最小的ASP.NET处理程序(.ashx),它返回一个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;
}
}
}
当我在IIS Express上运行我的Web应用程序时,该应用程序托管在localhost:45050。如果我在主开发机器上浏览到localhost:45050 / handler1.ashx,则会按预期下载PDF。如果我使用DHC Chrome扩展程序(HTTP客户端)在localhost:45050 / handler1.ashx上执行HTTP GET,则会返回HTTP 200 OK响应代码以及二进制数据:
然而,如果我在不同的机器上运行完全相同的ASP.NET项目,我会遇到奇怪的问题。随着项目在localhost:45050上本地运行,我仍然可以浏览到Chrome / Firefox / IE中的localhost:45050 / handler1.ashx来下载文件。但是,当我使用DHC扩展在localhost:45050 / handler1.ashx上执行HTTP GET时,没有响应!
我可以在这台备用计算机上通过DHC解析localhost:45050(网站的主页)。服务器以200 OK响应并生成登录页面。
但在处理返回二进制内容的处理程序时,除了浏览器的URL栏之外,我无法从服务器获取任何HTTP客户端的任何响应。浏览器如何能够独立HTTP客户端不能解决HTTP响应?有谁知道这里可能会发生什么?什么会导致机器间的行为改变?我试图在JavaScript客户端中处理响应,但我没有收到任何数据。
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
这里的最佳答案......
Best way to stream files in ASP.NET
......解决了这个问题。似乎在一次调用中编写大文件在某些服务器上是禁止的。你必须手动分组响应。