Следуя ответу LachlanB, если ваш ApiController не находится в определенном каталоге (например, / api), вы можете вместо этого проверить запрос с помощью RouteTable.Routes.GetRouteData, например:
protected void Application_PostAuthorizeRequest()
{
// WebApi SessionState
var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
if (routeData != null && routeData.RouteHandler is HttpControllerRouteHandler)
HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
}