確かに - それは良い考えだと思います
と 3. は関連しています: 問題は、この辞書とロジックを実際にどこに保存するかです。
もちろん、ASP.NET アプリケーションまたはセッション スコープが最も簡単な選択ですが、アプリケーション プールのロジックを理解する必要があります。ASP.NET アプリケーションは時々リサイクルされます。特定の期間、または特別な状況でサイトにアクションがない場合 - たとえば、プロセスが大量のメモリを消費し始めた場合、アプリケーションはシャットダウンされ、新しいアプリケーションが開始されます。次のリクエスト。セッションとアプリケーションのシャットダウンのためのイベントがありますが、少なくとも数年前までは、信頼できるものではありませんでした。多くの特殊なケースでは、常に起動するとは限りませんでした。今は改善されているかもしれませんが、テストするのは大変です。そして、1 時間は本当に長い時間です。通常、セッションは最後のリクエストから 20 分程度しか維持されません。
信頼できる方法は、別の Windows サービスを用意するか (プログラミングに多くの作業が必要)、常にダブルビュー分析を使用してデータベースに保存することです (このような小さな機能にはかなりのオーバーヘッドがかかります)。
IIS ログにアクセスできますか? ある種のタイマー プロセスを使用して、たとえば 30 分ごとに IIS ログを分析し、そこからカウントを取得するのはどうですか? または、すべてのヒットをユーザー情報とともにデータベースに保存し、同様のタイミングのプロセスで一意のヒットを計算します。
最後に 1 つの質問: インターネットの何千ものカウンター アプリケーション/サービスのどれも、あなたの要件に十分に近い仕事をしないと本当に確信していますか?
幸運を!