環境:
- サーバー 2008
- IIS 7、統合モード
- .ネット4
- ASP.NET WebForms ルーティング (MVC ルーティングと同じ .dll を使用しますが、どのバージョンかはわかりません)
- Cookie を使用しないセッション (セッション ID はユーザーの URL を移動します)。
ルーティングを使用して、ユーザーが関連付けられている組織を識別するアプリケーションがあります。URL は domain/Organization/OrganizationSubCategory の形式になります。ユーザーがカスタム URL をたどると、ランディング ページが表示されます。次にヒットすると、人口統計情報を収集するページに誘導され、次にヒットしてアプリケーションに進みます。その場合、ユーザーはデータベース内の組織に (必要に応じて) 追加されます。最初のランディング ページの後、ルーティングは適用されなくなります。ユーザーは通常の aspx ページに誘導されます。
このサイトは、かなりの数のユーザーがアプリにアクセスしています。1日平均850枚。
問題は、少数 (1% 未満) のユーザーが間違った組織に追加されていることです。
ランディング ページと、ユーザーが人口統計ページを送信したときの情報をログに記録しています。私たちがログに記録するものの 1 つは、Request.RawUrl です。ある組織に関連付けられているユーザーが、別の組織の完全な正しい URL (サブカテゴリを含む) を要求したとしてログに記録されることに気付き始めました。同じ日にさえ、間違った組織の URL をたどって合法的にアクセスする人がいないこともありました。「サブカテゴリ」を (管理アプリケーションを使用して) 作成し、ユーザーに独自の URL に従うように指示しただけであると直接報告した人がいますが、ログにはそのユーザーのまったく異なる URL が示されています (私はそれがメール アドレスとセッション ID をログに記録しているため、ランディング ページと人口統計ページを介して同じユーザーのパスを関連付けることができます)。これ'
ある種のキャッシングを排除する試みとして、次のものがあります。
- config httpRuntime 要素の enableKernelOutputCache 属性を false に設定します。
- IIS 設定でのキャッシュの無効化
- config sessionState 要素の regenerateExpiredSessionId 属性を false に設定します (セッション ID が再利用されていることは確認していませんが)。
他の提案?