我一直在尝试很长一段时间才能获得Web API 2的工作。我在互联网上看了很多文章和帖子,但到目前为止我一直不走运。Web API 2不工作(404)
我只需要简单的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 +网页API 2.
感谢您的帮助。如此简单的事情,没有任何工作。
Api路由必须首先评估,或者您需要创建更严格的mvc路由(例如,框架不会尝试查找'ApiController')。这不是MVC5特定的行为 – chemitaxis
您真棒!它的工作原理,只有我不得不删除开始/从建议的路线[路线(“/ api/sendemail”)]。我会接受这个答案。 – Daniel
从一个空的项目开始,我错过了FilterConfig和RouteConfig部分。基于模板添加这些类别的技巧。 – Jerther