Распихать по разным местам приложения обфусцированный код, который будет проверять валидность ключа, и который потом (если надо) все равно нафиг поломают.
Лучшая защита - вынос коммерчески значимого функционала на внешний сервер.
Давно уже с asp.net не работал, но возможно стоит посмотреть тогда в сторону сохранения сессий в БД, либо на уровне самого сервера, если перезапускается конкретно только твой процесс сайта.