Web API 2 与 MVC 项目混合

Web API 2 mixed with MVC project

我刚刚向我的 MVC 5 项目添加了一个空的 Web API 2 控制器。我正在尝试通过 Web 浏览器的地址栏中的以下内容调用 WebAPI:

http://localhost:25488/api/devices/

http://localhost:25488/api/devices/GetLastConditionForAll

但是,我收到了 404,未找到,并且它没有在我的控制器中达到我的断点。

添加 Web API2 控制器创建了一个 WebApiConfig.cs,如下所示:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

它也将我的Application_Start()修改为:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        GlobalConfiguration.Configure(WebApiConfig.Register);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

这是我的网站API 2 控制器:

public class DevicesController : ApiController
{

    public IHttpActionResult GetLastConditionForAll()
    {
        IEnumerable<X_Cas_Condition> conditionEntries;

        try
        {
            //conditionEntries = DbContext.Database.SqlQuery<X_Cas_Condition>(cmdToGetLastStatus);
            conditionEntries = new List<X_Cas_Condition>();
            return Ok(conditionEntries);
        }
        catch
        {
            conditionEntries = new List<X_Cas_Condition>();
            return NotFound();
        }
    }
}

在你的Application_Start()中:

GlobalConfiguration.Configure(WebApiConfig.Register); // first.
RouteConfig.RegisterRoutes(RouteTable.Routes); // second.