ASP.NET(へたれな)コネタ セッションオブジェクトの失敗
画面間の情報共有のためにセッションオブジェクトを利用しています。しかも、セッションオブジェクトの効率化のために、セッション・シングルトンの考え方を使用して同一セッションであれば、常に同一インスタンスをサーバサイドで参照できる仕組みを構築しました。このことにより、サーバサイドのドメインオブジェクトのインスタンスは常に同一セッションであれば同じものを参照できるので大変便利に使用してきました。
しかし、我ながら設計が甘かったです。ブラウザで右ボタンにより「新しいウィンドウで開く」とかの機能で同一セッションで複数のウィンドウが開かれた時に、セッション・シングルトンであるがゆえに競合が発生してしまいました。とりあえず、セッションオブジェクトのスーパークラス内の排他用処理を実装しましたが、全システム中で適切にその処理を呼び出さないと、タイミングによって問題が発生してしまいます。これから、それを見直すと思うとゾットします。
参考:
Sessionオブジェクト
ASP.NET的Singleton