我从一个看起来像这样的动作下载文件:
[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,但这并不重要。如何将操作限制为其中一个,但不会出错?
答案 0 :(得分:0)
答案是每次我点击下载文件时,都会发送两个请求,一个POST和一个HEAD。
如果操作不接受两者,则抛出异常。如果没有指定HTTP方法,则两者都没有错误。
这就是问题的答案。
但是,我不知道为什么有两个要求开始。我会在a separate question中询问。