I have created a WebApi controller, and it's returning the payload OK (i.e. I see the correct response in the browser), however the status of the request is a 404, which obviously causes problems with JS clients.
Why is the status 404 when clearly the route exists?
I have even tried setting the response status explicitly:
return Request.CreateResponse(HttpStatusCode.OK, "hello");
But still get a 404?
I'm using Sitecore version 8.2 update 4.
Controller:
public class SearchApiController
: ApiController
{
[HttpGet]
public HttpResponseMessage Search()
{
var searchResults = GetSearchResults();
return Request.CreateResponse(HttpStatusCode.OK, searchResults);
}
}
Route mapping via pipeline:
public class InitializeRoutes
{
public void Process(PipelineArgs args)
{
var config = GlobalConfiguration.Configuration;
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Config:
<pipelines>
<initialize>
<processor type="Feature.Search.Infrastructure.Pipelines.InitializeRoutes, Feature.Search" resolve="true" patch:before="processor[@type='Sitecore.Mvc.Pipelines.Loader.InitializeGlobalFilters, Sitecore.Mvc']" />
</initialize>
</pipelines>