【问题标题】:Call to .ashx returns the file not the JSON result调用 .ashx 返回文件而不是 JSON 结果
【发布时间】:2009-07-08 03:14:03
【问题描述】:

我知道这是有效的,因为一旦它解析 JSON 响应,我就会在 jQuery 插件中填充数据。过去我已经调用了很多次,只是为了在浏览器中查看返回的 JSON。但最近无论出于何种原因,在我逐步使用调试器发现我的 .ashx 中的代码工作正常之后,我收到一个下载提示,提示我下载 .ashx 文件而不是 JSON

http://localhost:59396/xxx/xxxHandler.ashx?action=getproducts&showprodname=true&showprodprice=true&ids=5410,8362,6638,6758,7795

【问题讨论】:

  • 打开的 .ashx 有 JSON。但是我在这里很沮丧,因为过去我直接返回时只能在浏览器中看到它!
  • 这是我在返回 JSON 时在 .ashx 中使用的编码:context.Response.ContentType = "application/json"; context.Response.Charset = "utf-8";

标签: asp.net


【解决方案1】:

您是否观察过您的网络流量(例如 www.fiddler2.com)?返回什么内容类型?

您是否保存了文件以查看其中的实际内容?

如果您正在获取源代码,这意味着 HTTPHandler 并没有真正运行以实际执行 ASP.NET 源代码。

【讨论】:

  • 源码正在执行,我单步执行了。
  • IE 是否会提供保存“application/json”或尝试将其呈现为文本取决于您在注册表中针对该 MIME 类型的内容。
【解决方案2】:

您是否在 IIS 下托管网页? 这可能是因为 .ashx 文件扩展名未在 IIS 中注册。在这种情况下,检查 IIS 文件映射下的 .ashx 扩展名。

【讨论】:

  • 那么为什么它在过去一周工作,现在决定不工作?
  • 可能重新注册文件映射,aspnet_regiis 出了问题,可能是很多事情。我并不是说问题是因为这个,但可能是。
【解决方案3】:

确认您具有 EricLaw 建议的正确内容类型,但如果您尝试直接浏览到 JSON,则它按设计工作。从 javascript 请求 url 并查看是否获得预期的数据响应。浏览器将该文件视为 ASHX 文件,该文件已注册到 Visual Studio,但它实际上只是一个文本文件,如果它实际上是 json,您应该能够读取任何内容。

【讨论】:

  • 我已经在浏览器中粘贴了一周。我从来没有得到提示下载 .ashx 而不是实际的 JSON。我总是得到 JSON 并且我单步执行它并且我在 .ashx 代码中返回的字符串有有效的 JSON 被发送到上下文编写器
  • 我能够运行它,它在过去一周一直将 JSON 输出到浏览器!
  • 好吧,那么也许您可能想看看 ASHX 文件包含什么——听起来输出可能不再是 json。就像所说的处理程序正在抛出异常。 . .
猜你喜欢
  • 2018-03-24
  • 2013-01-09
  • 1970-01-01
  • 2022-01-04
  • 2012-01-13
  • 1970-01-01
  • 2018-05-28
  • 2013-08-10
  • 2019-05-29
相关资源
最近更新 更多