Вот моя проблема, я хочу получить имя пользователя и пароль клиента с запросом 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
, я не хочу менять URL, потому что я хочу использовать 3 URL /api/Login
, /api/Method1
и /api/Method2
для 3 различных контроллеров:
$.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
.