Я бы просто выполнил любую операцию в global.asax над приложением, которое переопределяет, что обеспечивает NinjectHttpApplication. Если вы используете обычный HttpApplicaiton (без переопределения NinjectHttpApplication) в вашем global.asax, просто используйте обычное событие HttpApplication_Start, чтобы выполнить инициализацию кэша. Прикосновение к контейнеру IoC в этом контексте допустимо, так как это составной корень вашего приложения. Так что я думаю что-то вроде:
Bind<IProvider>().To<CacheProvider>().InSingletonScope(); //<in binding module
Kernel.Get<IProvider>().SetupCache() //<in global.asax
Я действительно не вижу необходимости, чтобы это было более сложным, чем это ... Хотя я могу ошибаться.
Если вы можете предоставить более подробную информацию о провайдере, я могу дать более конкретное предложение.