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
...解决了问题。在某些服务器上,在单个调用中写入大文件似乎是禁忌。您必须手动分块响应。
我至少有 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
...解决了问题。在某些服务器上,在单个调用中写入大文件似乎是禁忌。您必须手动分块响应。