在文件下载操作上指定HTTP方法会引发异常

时间:2015-06-02 06:31:45

标签: asp.net asp.net-mvc http-headers elmah

我从一个看起来像这样的动作下载文件:

[HttpPost]
public override FileContentResult Foo() {
  var someDataAsBytes = ...
  return File(someDataAsBytes, "text/csv", "somefilename.csv");
}

该视图有一个表单,可以对此操作进行POST。

我在脚本中启动下载,因此页面不会更改:

$(myForm).on("submit", function() {
  window.location.href = $(this).attr("action");
});

正确下载文件。

但是,我的Elmah日志显示存在“无匹配操作”错误。

如果我使用[HttpHead][HttpPost][HttpGet],我会得到相同的结果。 如果我删除HTTP方法,那么我不会收到错误。

理想情况下我想使用POST,但这并不重要。如何将操作限制为其中一个,但不会出错?

1 个答案:

答案 0 :(得分:0)

答案是每次我点击下载文件时,都会发送两个请求,一个POST和一个HEAD。

如果操作不接受两者,则抛出异常。如果没有指定HTTP方法,则两者都没有错误。

这就是问题的答案。

但是,我不知道为什么有两个要求开始。我会在a separate question中询问。