Я давно пытаюсь работать с Web API 2. Я прочитал много статей и сообщений через Интернет, но до сих пор мне не повезло.
Мне просто нужно получить простой простой метод Web API, но по какой-то причине я все еще получаю 404 метод не найден. Я действительно не знаю сейчас, где проблема может быть, как мне кажется, все в порядке.
Я пробовал множество вариаций атрибутов, конфигов и т.д. Я получил код:
Global.asax
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(WebApiConfig.Register);
WebApiConfig.cs
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(x => x.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
ApiController
public class ContactFormController : ApiController
{
[Route("~/api/sendemail")]
[HttpPost()]
public IHttpActionResult SendEmail(ContactFormModel contactForm)
{
return Ok();
}
}
Модель:
public class ContactFormModel
{
public string Name { get; set; }
public string Email { get; set; }
public string Subject { get; set; }
public string Message { get; set; }
}
Код jQuery
var jsonData = { "Name": name.val(), "Email": email.val(), "Subject": subject.val(), "Message": comment.val() };
$.ajax({
url: "api/sendemail",
type: "POST",
data: jsonData,
cache: false,
...
});
Как вы можете видеть, это MVC 5 + Web API 2.
Спасибо за помощь. Так просто и ничего не работает.