Web API POST 未找到(在浏览器上抛出 404)但适用于 PostMan 和 Swagger

Web API POST not found (throws 404 on browser) but works on PostMan and Swagger

My Web API returns 从 AJAX 调用时为 404,但在 PostMan 和 Swagger 上运行良好。

Post方法

// POST api/<controller>
[HttpPost]
public int Post(string url, string RData, string aid, string AuthToken)
{
       //do something
}

jQuery AJAX 来电:

 function SaveData() {
            var $form = $("#formMain");
            var data = Serialize($form);
            var RData = JSON.stringify(data);
            var Url = window.location.href;
            var aid = "12332";
            //Get Auth Token

            $.ajax({
                url: "/api/Register/MyAPIKey", //Getting Auth Token first
                type: "GET",
                success: function (res) {
                    let AuthToken = res;
                    //After receiving Auth token, finally submit the registration data. This throws 404 error only on browser.
                    $.ajax({
                        type: "POST",
                        url: '/api/Register',
                        data: {
                            'url': Url,
                            'RData': RData,
                            'aid': aid,
                            'AuthToken': AuthToken
                        },
                        success: function (data) {
                            //Show success message
                        }
                    });
                }
            });
        }

我在浏览器控制台中得到的错误是:

Message: "No HTTP resource was found that matches the request URI 'http://localhost:54318/api/Register'."
MessageDetail: "No action was found on the controller 'Register' that matches the request."

Postman 屏幕截图:请注意 -1 是预期的响应,因为 API 方法中的某些其他验证不正确。但我们现在可以忽略它,因为状态是 200.

当我将 Post 方法中的各个参数替换为具有所有这些属性的对象时,问题得到解决。

[HttpPost]
public int Post(PostData Reg)
{
   //do something
}

public class PostData
{
    public string url { get; set; } 
    public string RData { get; set; }
    public string aid { get; set; }
    public string AuthToken { get; set; }
}

最后在 ajax 方法中将数据类型设置为 JSON。

dataType: "json"