Конечно - я думаю, что это хорошая идея
и 3. связаны: проблема в том, где вы на самом деле храните этот словарь и логику.
Приложение ASP.NET или область сеанса, конечно, самый простой выбор, но здесь вам действительно необходимо понять логику пулов приложений.Приложения ASP.NET время от времени перезагружаются: когда на сайте в течение определенного периода не выполняется никаких действий или в особых ситуациях - например, если процесс начинает занимать слишком много памяти, приложение закрывается и запускается новоеследующий запрос.Существуют события для закрытия сеанса и приложения, но, по крайней мере, несколько лет назад они не были действительно надежными: во многих особых случаях они не всегда срабатывали.Возможно, сейчас они лучше, но это больно проверять.А 1 час - это действительно много времени: обычно сеансы поддерживаются только через 20 минут после последнего запроса.
Надежным способом было бы иметь отдельную службу Windows (много работы для программирования) или всегда хранитьк базе данных с двойным анализом (довольно много накладных расходов для такой маленькой функции).
Есть ли у вас доступ к журналам IIS?Как насчет анализа журналов IIS, например, каждые 30 минут с помощью какого-то процесса таймера и отсчета?Или же просто сохраните все совпадения в базе данных с информацией о пользователе и рассчитайте уникальные совпадения с помощью аналогичного времени.
Последний вопрос: действительно ли вы уверены, что ни одно из тысяч встречных приложений / служб в Интернетене сделаете работу достаточно близко к вашим требованиям?
Удачи!