为什么此 MVC 操作 return 在 IE11 中出现 404 响应

Why does this MVC action return a 404 response in IE11

我编写了一个在 Chrome 和 Firefox 中有效但在 IE11 中无效的 mvc 操作。使用 IE11 它 returns 404 响应代码。

控制器:

[HttpDelete]
public ActionResult DeleteAction(int ActionID)
{
    return Json(_Logic.DeleteAction(ActionID), JsonRequestBehavior.DenyGet);
}

调用 JS:

Ajax_Proxy.DeleteAction = function (_actionID, successCallback, failureCallback) {
    return $.ajax({
        type: "DELETE",
        datatype: 'json',
        url: "/root/someurl/DeleteAction?ActionId=" + _actionID,
        contentType: 'application/json; charset=utf-8',
        success: function (data) { successCallback(_actionID, data); },
        error: function (data) { failureCallback(data); },
    });
};

我访问的 Url 是正确的,因为它在其他浏览器中有效。有人以前看过这个吗?

试试这个。

Ajax_Proxy.DeleteAction = function (_actionID, successCallback, failureCallback) {
return $.ajax({
    type: "DELETE",
    datatype: 'json',
    url: '@Url.Content("~/root/someurl/DeleteAction/")' + _actionID,
    contentType: 'application/json; charset=utf-8',
    success: function (data) { successCallback(_actionID, data); },
    error: function (data) { failureCallback(data); },
});

};

因为你说它在 Chrome 和 Firefox 中有效,我假设你在 IIS 上启用了 PUT/Delete 方法?

如果是,我认为这可能是某些 IE 浏览器不支持 Ajax 调用中的 type: "DELETE" 的问题。也许您正在使用 IE8 或类似的兼容模式?

这个问题已经在 SO here 上提到了:Problem with jQuery.ajax with 'delete' method in ie 也许你只是发现 IE11 也不支持 DELETE

又一个不错的讨论Are the PUT, DELETE, HEAD, etc methods available in most web browsers?