我有一个最小的ASP.NET处理程序(ashx的)无响应返回一个PDF文件:从ASP.NET HTTP Handler--只在特定的HTTP客户端上的特定机器
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客户端),以在本地主机上执行HTTP GET:45050/handler1.ashx,一个HTTP与二进制数据一起被返回200 OK响应代码:
无论其,如果我在不同的机器上运行完全相同的ASP.NET项目,我遇到了奇怪的问题。通过在localhost:45050上本地运行项目,我仍然可以浏览Chrome/Firefox/IE中的localhost:45050/handler1.ashx来下载文件。但是,当我使用DHC扩展在localhost:45050/handler1.ashx上执行HTTP GET时,没有响应!
我能决心本地主机:45050(该网站的主页)通过DHC这个备用机上。服务器以200 OK响应并产生登录页面。
但是,当处理返回二进制内容的处理程序时,除了浏览器的URL栏之外,我无法从任何HTTP客户端获得任何回应。独立HTTP客户端无法在浏览器中解析HTTP响应吗?有谁知道这里可能会发生什么?什么会导致行为在机器间发生变化?我试图在JavaScript客户端中处理响应,但我没有收到任何数据。
任何帮助将不胜感激。谢谢!
不能确定何时涉及IIS Express,但对于常规IIS,问题可能与MIME类型有关。两个IIS实例都有.pdf文件扩展名的映射吗? – Culme
是的,这两个实例都有一个application/pdf映射。我解决了这个问题。请参阅下面的答案。感谢您查看这个! – jforce