我已经尝试了很长时间让 Web API 2 正常工作。我已经在互联网上阅读了很多文章和帖子,但到目前为止我一直不走运。
我只需要使用简单的 Web API 方法,但出于某种原因,我仍然收到 404 方法未找到的消息。我现在真的不知道哪里出了问题,因为在我看来一切正常。
我已经尝试了很多属性、配置等的变体。我最终得到了这段代码:
全局.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);
API Controller
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。
感谢您的帮助。如此简单的事情,没有任何效果。
最佳答案
请像这里一样更新您的 global.asax:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
并将[Route("~/api/sendemail")]
更改为[Route("/api/sendemail")]
关于c# - Web API 2 不工作 (404),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24954212/