【问题标题】:Resume downloads in ASP.NET在 ASP.NET 中恢复下载
【发布时间】:2014-10-14 06:02:21
【问题描述】:

我正在按照 MSDN example 在 ASP.NET 中实现简历下载功能

但是,我做了一些更改:

  • 在上述示例中,HTML 页面上的“下载”按钮发出 GET 请求。 ASPX 页面上的“我的下载”按钮发出 POST 请求。

  • 我使用的是 Download.aspx.vb 而不是处理程序页面 DownloadHttpHandler.ashx.vb,这会调用 DownloadFile.vb 中的相应函数。

问题是 Internet Explorer 10 中无法继续下载。仔细检查请求后,我发现我的 ASPX 页面上的“下载”按钮发出了 POST 请求。然而,如前所述,HTML 页面上的“下载”按钮会发出 GET 请求。

为了进一步确认 GET/POST 是否有任何不同,我将 GET 更改为 POST(在原始 MSDN 示例中)。这是我做的唯一改变。正如预期的那样,下载不会在 Internet Explorer 中恢复。

在搜索类似问题时,我找到了this 示例。即使在这里也只允许 GET/HEAD 请求,并且明确不允许所有其他类型(如 POST)。

所以,如果我没记错的话,只支持 GET 请求。为什么?

【问题讨论】:

  • 感谢您的建议。我已经进一步解释了我的问题。

标签: asp.net download


【解决方案1】:

在您引用的代码中,原始帖子要求的逻辑是仅使用 GET 或 HEAD 请求。一般来说,你可以使用

request.HttpMethod

检查 POST、GET、DELETE、PUT 等请求。

要了解更多关于标头的信息,我建议this

我也建议通过this 来大致了解 HttpMethod。

【讨论】:

  • 你是说我们也可以有 POST 请求吗?我仍然不明白为什么只允许 GET 和 HEAD 而明确禁止所有其他类型。
  • 是的,你可以。 在该特定问题中只允许使用 GET 和 HEAD。假设您是服务器,您只处理 GET 请求。我正在向您发送 POST 请求,您将如何区分它?这就是他们只检查 GET 和 HEAD 的原因,因为他们的服务器端代码只针对这些请求进行配置。
  • 如果您有任何其他问题,或者如果这回答了您的问题,请告诉我,接受它作为答案会有很长的路要走。
  • 谢谢。实际上,我正在尝试 code.msdn.microsoft.com/…> 但不是带有下载按钮的 HTML 页面,而是一个 aspx 页面,而不是(处理程序)ashx.vb 页面,我有 aspx.vb。所以我在 aspx 页面上的按钮在 HTML 页面的情况下发出 POST 请求而不是 GET 请求。尽管其他一切都相同,但下载不会在 IE 中恢复。为了验证,我在 HTML 页面中将 GET 更改为 POST 和果然,IE 并没有恢复下载。我其实是想确认一下这(GET/POST)是否有所作为。
猜你喜欢
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 2011-01-03
相关资源
最近更新 更多