![](/img/trans.png)
[英]Unable to retrieve value in AJAX POST call. [Used AJAX, MVC ASP.net, .net framework 4.0]
[英].NET Framework 4.6.2 Unable to hit POST endpoint
我创建了一个 .NET 框架 4.6.2 WEB API,在我的 AuthController 中创建了一个将接受参数的测试端点。 我无法达到这个终点。 我得到的错误是:“MessageDetail”:“在与名称“Test”匹配的 controller 'Auth' 上找不到任何操作。”
端点:
[Route("api/auth")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class AuthController : ApiController, IDisposable
{
[HttpPost]
[Route("Test")]
public HttpResponseMessage Test([FromBody] object response)
{
return Request.CreateResponse(HttpStatusCode.OK, "Success");
}
}
我的登录 Function:
function LogIn() {
InputData = {
UserName: $("#Login_UserName").val(),
Password: $('#Login_Password').val()
};
console.log($("#Login_UserName").val());
console.log(InputData);
$.ajax({
type: "post",
url: 'https://localhost:44393' + '/api/auth/test',
contentType: 'application/json',
data: JSON.stringify(InputData),
success: function (data) {
HideSmokeLoader();
console.log(data);
},
error: function (request) {
console.log(request)
}
});
}
尝试将 controller 中的 Route 属性更改为 RoutePrefix。 所以:
[RoutePrefix("api/auth")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class AuthController : ApiController, IDisposable
制作了一个新项目并进行了与您一样的设置。 然后使用 postman 调用端点并得到相同的“未找到操作...”。 Route 属性是 Action 的完整路径 - 因此,如果您要调用 https://localhost:44393/Test,您将到达 controller。
像这样在 Action 本身上添加您的Route
-
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class AuthController : ApiController, IDisposable
{
[HttpPost]
[Route("api/auth/test")]
public HttpResponseMessage Test([FromBody] object response)
{
return Request.CreateResponse(HttpStatusCode.OK, "Success");
}
}
将 [Route("api/auth")] 更改为 [RoutePrefix("api/auth")] 因为 RouteAttribute 放置在 controller 或操作以通过路由直接公开它。 当放置在 controller 上时,它适用于没有任何 System.Web.Mvc.RouteAttribute 的操作。
RoutePrefixAttribute
使用适用于 controller 内所有操作的路由前缀注释 controller。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.