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"
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"