アプリケーションが実行されているドメインに基づいて、ASP.net で SessionState に使用される sqlConnectionString を変更できるかどうか疑問に思っていました。
シナリオ; 1 つのアプリケーションから実行されている 20 のサイトがあり、すべてが閲覧元のドメイン (サイト) に応じて異なるデータベースと通信しています。
www.domain1.com を参照すると、アプリケーションはデータベース 'db1' と通信します。一方、サイト www.domain2.com はデータベース 'db2' などと対話するため、関連するコンテンツが選択され、1 つのマスター データベースを使用してサイトのすべての接続を処理するのではなく、各データベースに負荷が分散されます。
ただし、発生した問題 - このセットアップでは、SessionState に SqlServer モードを使用するため、すべてのサイト セッションへのすべてのユーザーが 1 つの aspstate データベースに格納されます。サイトがビジー状態になり、サイトの数が増えると、このデータベースを処理する負担が増大します。すべてのサイトのすべてのセッション リクエストと、このデータベースへの接続がボトルネックになっているタイムアウト エラーが発生し始めています。
サイトを独自のアプリケーションから分離し、同じコードで異なるアプリケーションをセットアップできますが、各アプリケーション内で各 Web.Config に異なるセッション データベースを設定することで、負荷を軽減できます。ただし、このタスクにはかなりの時間がかかり、長期的にはより多くの管理が必要になります。SO ..セッションオブジェクトが作成される前に、ドメインに基づいてSessionStateに使用されるsqlConnectionStringをコード内で変更できるかどうかを知りたいですか? System.Web.HttpApplication から継承し、Application_AcquireRequestState イベントを使用して、HttpSessionState オブジェクトの必要なセットアップを作成できますか?
うまくいけば、これは理にかなっており、誰かがいくつかの指針を提供して、これが夢物語ではないことを証明してくれることを願っています!
乾杯、スティーブ