text: I have a Kentico project that was recently upgraded to version 8.1.4 from some version < 8.1.
  A previously working Web API route and controller is no longer functioning, and I'm struggling to understand what else I can try to get it to work.
  Our route is defined as follows:
  config.Routes.MapHttpRoute("Api", "api/{controller}/{action}/{id}", new { id = RouteParameter.Optional }
  This is how our route is and was defined. This code is called from the MCS_MVCModule class during initialization as follows:
  WebApiConfig.Register(GlobalConfiguration.Configuration);
  Our controller is defined as:
  public class CommentsController : ApiController
  Our action is:
  public CommentResponse GetComments(int boardID)
  Couple of troubleshooting steps we've noticed and addressed:
  -Added the /api/ path to Kentico's "ignore urls" list
  -Verified that the route configuration is being hit
  -We did notice that the upgrade eliminated our WebApiConfig.Register() method's contents. We added back in the route above.
  - We noticed that the upgrade process ignored our custom-named solution file, and instead created a new solution file without the web API components. We've verified that they're back in place
  Really looking for any good alternatives here. Please let me know if you have any suggestions.
  Hi Adam,
  we use WebWpi in Kentico 8.1 as well and we noticed poor performance at application start caused by WebApi and we had to customize it a little in order to make it perform better. To be more specific, when application starts, WebApi browses through all assemblies and tries to find classes deriving from ApiController. As our code base is fairly large, this lookup took too long and we needed to replace the default WebApi IHttpControllerTypeResolver with our implementation which looks only for explicitly registered controllers.
  IHttpControllerTypeResolver
  You have two options how to make your API work:
  Option 1: Register all of your controllers with the RegisterApiController assembly attribute.
  RegisterApiController
  [assembly: RegisterApiController(typeof(LiveTileController))]
  namespace CMS.ApplicationDashboard.ApiControllers
  {
  internal sealed class LiveTileController : ApiController
  {
  ...
  You will need to reference CMS.WebApi assembly to do that.
  Option 2: Use newer version of WebApi than we use - that would be version 2 (assembly 5.2.2)
  I apologize for the inconvenience this issue caused you. We are thinking how to improve this in Kentico 8.2. One of the solutions we are looking at, is to require registration only for our libraries and always go through all classes in customer's libraries including CMSApp_MVC.
  Hi,
  I tried using your example but it deosn't see to be working for me. I followed the steps as you mentioned here but it still doesn't recognize the RegisterApiController class.
  I am using Kentico10 and have created a webapi project for data access under website solution.
  Can you please provide more details on it.
  Has anyone found an answer to this? I'm currently on K10.0.50 and am having the same issue. I can't even get the example web api working in my project.
  Alex - I just ran into the same issue. I cut and paste the exact sample code they have at and yet the route would produce a 404.
  It then hit me that when I installed web api from nuget in my class library project it defaulted to the latest version. When I downgraded to the version that matched what is in the CMS project the routes started working. Hope that helps.
  Please, sign in to be able to submit a new answer.