【发布时间】:2021-03-05 19:06:04
【问题描述】:
我的 Web API 在从 AJAX 调用时返回 404,但在 PostMan 和 Swagger 上运行良好。
发布方法
// 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."
邮递员屏幕截图:请注意-1 应作为响应,因为 API 方法中的某些其他验证不正确。但是我们现在可以忽略它,因为状态是200。
【问题讨论】:
-
可以添加 Postman 请求的截图吗?
-
@HarshanaSerasinghe,请查看更新后的问题。
-
@Cyberpks 您可以尝试在邮递员的正文选项卡上传递 json 对象吗?似乎值是以您发送请求的方式作为查询参数传递的。
-
@BaldevBhattarai,我现在也可以在 PostMan 中看到同样的问题。这意味着在代码方面存在一些配置问题。尝试过 Swagger,它也将值作为 Querystring 传递。不知道出了什么问题。
-
@Cyberpks 我认为这是因为不支持的有效负载格式。尝试传递正确的 contentType 和/或 dataType 值和/或接受,希望能解决您的问题。
标签: javascript asp.net ajax asp.net-web-api2