【发布时间】:2019-03-31 09:00:59
【问题描述】:
这是我的问题,我想通过POST请求接收客户端的用户名和密码。
代码看似简单,但行不通
LoginController.cs:
public class LoginController : ApiController
{
[HttpPost]
[ActionName("Login")]
[Route("api/{controller}")]
public HttpResponseMessage Login([FromBody] LoginJson json)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
}
LoginJson.cs 表单:
public class LoginJson
{
public string Username { get; set; }
public string Password { get; set; }
}
ajax 请求带有jQuery,我不想更改网址,因为我想为 3 个不同的控制器使用 3 个网址 /api/Login、/api/Method1 和 /api/Method2:
$.ajax({
url: '/api/Login',
type: 'POST',
dataType: "json",
contentType: "application/json, charset=utf-8",
data: JSON.stringify({
Username: username,
Password: password,
}),
...
});
API 的路由,在Global.asax.cs:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalFilters.Filters.Add(new HandleErrorAttribute());
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.MapRoute(...)
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new {action = RouteParameter.Optional}
);
}
我收到错误 404 (Not Found)。
我将更改Global.asax.cs 文件。
【问题讨论】:
-
ApiController来自 ASP.NET Web API。 AJAX 来自 AJAX。请不要删除有用的标签。 -
看起来这对于属性路由来说是完美的。 blogs.msdn.microsoft.com/webdev/2013/10/17/…
-
@mason 你能帮我建议你的答案吗?我尝试了不同的可能性,例如您链接中的提示,但我仍然有
404 (Not found) -
我提供的文档清楚地描述了如何设置属性路由。
标签: c# ajax asp.net-mvc asp.net-web-api