Web.config - это способ .NET или ASP.NET, он не всегда самый эффективный или наиболее подходящий.
Ваш файл Global.asax - это намного больше, чем некоторые события, вы можете поместить статические данные в любой класс, который подкласс System.Web.HttpApplication, и унаследовать их в файле Global.asax.
HttpSessionState и HttpApplicationState - это реликвии с классического времени ASP, и вы бы хорошо их избежали, потому что подача не имеет никакой реальной цели.
В зависимости от типа (System.Type) ваших объектов вы можете создавать собственные строго типизированные объекты, которые хранят информацию о вашем приложении и сеансе, для данных уровня приложения будет достаточно кучки статических полей.
Они должны быть статическими, поскольку каждый модуль HttpModule, а также экземпляр HttpApplication являются объектами из пула, поэтому во избежание этой путаницы убедитесь, что ваши постоянные данные хранятся в статических или нескольких статических словарях. Но следует помнить о проблемах параллелизма при модификации этих коллекций. Хорошей стратегией является блокировка объекта, только на время, когда вы его модифицируете, и убедитесь, что вы не вызываете никакой другой код во время модификации коллекции, простой способ подкачки может быть полезен здесь, это быстро и не - гарантия блокировки.