Я бы использовал обычный кеш данных ASP.NET.
Состояние приложения полезно только в том случае, если данные редко изменяются, но, судя по звукам вопроса, они часто меняются. Он также свободен от потоков и не масштабируется (например, в сценарии веб-фермы).
С помощью кеша вы можете контролировать срок действия элементов, указывать обратные вызовы при удалении элементов, использовать скользящее истечение срока действия, получать к нему доступ через интерфейсы, что означает, что его можно легко протестировать (в то время как состояние приложения придется проверять), и можно легко масштабировать, если вы настроите его правильно.
Это намного надежнее, чем простая оболочка get / set для состояния приложения.