3

職場では、忙しい ASP.NET MVC Web サイトをゼロ ダウンタイムで展開するためのかなり優れたプロセスがあります。トラフィックを移動できるように 2 つのサーバー グループがあり、後方互換性があるように db SP を作成し、事前にロールアウトします。一般的に、それはうまく機能します。

ただし、1 つの問題でつまずきました。最後の展開には、多くのコード名前空間の変更が含まれていました。

ビルドがデプロイされると、セッション状態のオブジェクトが新しいコードベースに存在しなくなったため、既存のユーザー セッションが壊れました。たとえば、セッションには App_Code.UserDetails が含まれ、サイトには XYZUserDetails のクラスが含まれています。

問題とその理由は理解していますが、サイトにアクティブなユーザーがいないことを確認するためにサイトを完全にシャットダウンする以外に何かできることがあるかどうかはわかりません. または、状態サービスを再起動して、全員が起動し、再度ログインする必要があるかもしれません。アイデアはありますか?

4

1 に答える 1

0

これを考えた後、私は2つの可能な解決策にたどり着きました:

a) 常にダウンタイムのある Web サイトの更新を展開します。すべてのセッションが期限切れになるのに十分な時間、サイトを停止したままにします。これは技術的には安全なオプションですが、商業的には受け入れられません

b) 問題をシミュレートし、例外ハンドラで問題に対処するために何ができるかを調べます。理想的なエンド ユーザー エクスペリエンスではありませんが、セッション状態で SerializationExceptions をキャッチし、ユーザー セッションをフラッシュする方がよい場合があります。再度認証する必要がありますが、セッションが壊れるほど悪くはありません。

私が事前に決めたのは、開発中にライブ セッションの依存関係を把握するのは難しいということです。他にも考慮すべきことが多すぎます。

(b) は非常に実現可能と思われるため、調査します。

于 2012-10-25T14:05:55.077 に答える