c# - Web API 2 不工作 (404)

标签 c# asp.net-web-api asp.net-web-api-routing

我已经尝试了很长时间让 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/

相关文章:

c# - 使用 AJAX 删除 Razor 页面

c# - WebApi Controller 返回空数据

azure - Azure 网站上的 SignalR CryptographicException

c# - 未调用 Web API 路由

c# - Asp.Net MVC4 + Web API Controller 删除请求 >> 404 错误

C# Linq to SQL - IEnumerable 连接两个数据表/上下文

c# - 为什么绑定(bind)到转换完全有效?

c# - 广度优先遍历

Asp.net Web api 2 Facebook 登录

c# - ASP.NET Web API (.NET Core 3.1) 中的终结点路由问题