Возможно, вы слишком усложняете проблему? Я не уверен, почему вам нужно использовать кэш. Не могли бы вы просто добавить файл в папку App_Code для размещения вашего класса, например, "mSingleton.cs"
public sealed class mSingleton
{
static readonly mSingleton _instance = new mSingleton();
public int MyVal { get; set; }
public static mSingleton Instance
{
get { return _instance; }
}
private mSingleton()
{
// Initialize members, etc. here.
}
}
Тогда он является глобальным для всего вашего кода и страниц, сохраняет состояние до тех пор, пока пул приложений не перезапустится или не произойдет перестройка приложения (я не знаю, вызывает ли это приложение также и перезагрузку - если это так, то это соответствует в любом случае), не нужно добавлять ни в кеш, ни в приложение, ни в переменные сеанса .. нет беспорядочной обработки
Вы можете сделать это на page_load в любом файле aspx.cs и обновить его, чтобы счетчик увеличивался при каждом подтверждении состояния:
mSingleton getMyObj = mSingleton.Instance;
getMyObj.MyVal++;