Jquery 为什么在服务器上发送ajax请求而不是在本地发送时会收到404?

Jquery 为什么在服务器上发送ajax请求而不是在本地发送时会收到404?,jquery,ajax,file-upload,asp.net-core-mvc,iis-8,Jquery,Ajax,File Upload,Asp.net Core Mvc,Iis 8,作为数据网格的一部分,我希望用户能够上传文件。我通过对服务器的jqueryajax调用来实现这一点。以下是我的ajax调用: var formData = new FormData(); formData.append("file", Data.File); //Data.File is a File object from a file input $.ajax({ type: "POST", url: "@Url.Action("UploadFile")", data

作为数据网格的一部分,我希望用户能够上传文件。我通过对服务器的jqueryajax调用来实现这一点。以下是我的ajax调用:

var formData = new FormData();
formData.append("file", Data.File); //Data.File is a File object from a file input
$.ajax({
    type: "POST",
    url: "@Url.Action("UploadFile")",
    data: formData,
    contentType: false,
    processData: false
});
这是我的控制器动作签名:

[HttpPost]
public IActionResult UploadFile()
当我通过IIS Express在本地测试时,它工作得非常好。但是,当我发布到IISWeb服务器时,它只会给我404个错误。我已经研究了IIS端的可能原因,但它们似乎都与大文件有关。我正在测试的文件不是很大;我测试过的所有内存都在1MB以下。我还有一个允许通过ajax上传文件的页面,该页面在本地或web服务器上不会遇到任何问题


这不是在这个页面上进行的唯一一个ajax调用,但它是唯一一个失败的调用。

起初,我感到困惑,因为正如我在原始帖子中所指出的,我有一个页面正在执行与我目前遇到的问题完全相同的操作。然而,在痛苦地等待了很长一段时间后,我意识到该操作可能返回404,因为抛出了一些异常。所以我做了rational的事情,在代码中放了一个try-catch块,并返回了所有错误

那时我才意识到,虽然调用是相同的,但我在后端做了一些不同的事情。我忘记了该网站依赖于我在本地安装的软件,而不是web服务器。在服务器上安装该软件后,文件将正常上载


tl;dr:操作返回404,因为它由于web服务器上缺少软件而引发异常。

那么请求的URL是什么,应该是什么?它们有何不同?检查浏览器的网络控制台,这是它请求的URL:http://[site]/[subdomain]/DataGrid/UploadFile。这正是它应该是的。这应该有效吗?如果您发送一个cURL请求,它是否返回404状态~
cURL-v-X POST-H“内容类型:”“http://[site]/[subdomain]/DataGrid/UploadFile”
好的,我做了上述操作(除了Powershell和“Invoke WebRequest-URI”),是的,我得到一个404。听起来你的服务器端应用程序没有正确配置。听起来你的异常处理程序返回了错误的响应代码。这应该是“500-内部服务器错误”