Запуск приложения действительно был создан для подобных целей. Если вы просто заполняете вещи из Web.Config, почему бы не создать класс, который извлекает их прямо оттуда, если вы беспокоитесь об абстракции? Он уже кэширован ASP.Net, поэтому вы не платите штраф за многократный доступ к web.config. Таким образом, вам не нужно беспокоиться об использовании Global.Asax, против которого вы, похоже, выступаете.
Если вы действительно против использования Global.Asax, у вас всегда может быть метод, который проверяет, загружены ли они на целевой странице вашего сайта, или есть метод на главной странице, который запускается каждый раз, когда страница с его помощью осуществляется доступ. Я все еще использовал бы Global.asax Application_Start или Session_Start, хотя сам.