将WebAPI添加到现有的MVC项目 - 在

时间:2016-06-05 15:36:23

标签: c# asp.net-mvc asp.net-web-api

添加此内容时,有许多建议的问题/答案。我经历了一堆,似乎没有人帮忙。

我确信我错过了一些简单的东西,但却无法看到它。

我有一个现有的ASP.Net MVC(V5)网站。它只是一个页面。

我正在为它添加一个API控制器(WebAPI 2)来处理一些ajax帖子。

尝试发布到我的控制器时,我似乎无法通过404错误。

我也在使用属性路由。

以下是我认为您需要查看的代码部分:

API控制器

[RoutePrefix("api/services")]
public class ServicesController : ApiController
{
    [HttpPost]
    [Route("contact")]
    public HttpResponseMessage SendContact(ContactModel model)
    {
        return Request.CreateResponse(HttpStatusCode.OK, true);
    }

}

WebApiConfig - 在我尝试的时候注释了几个部分。

public class WebApiConfig
{
    public static void Register(HttpConfiguration configuration)
    {

        configuration.MapHttpAttributeRoutes();


        //configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
        //    new { id = RouteParameter.Optional });
    }
}

我的global.cs - 再次评论了我尝试过的东西

AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
//WebApiConfig.Register(GlobalConfiguration.Configuration);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configure(WebApiConfig.Register);

当试图发布到api我收到:

POST http://localhost:8085/api/services/contact 404 (Not Found)

知道我缺少什么吗?

1 个答案:

答案 0 :(得分:2)

尝试放

GlobalConfiguration.Configure(WebApiConfig.Register);

RouteConfig.RegisterRoutes(RouteTable.Routes);

所以它应该是:

        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);