2009-08-20 19 views
4

私たちは、Windows 2005 + IIS 6を実行している物理サーバーから、Windows 2008 + IIS7を実行している仮想サーバーに移動する、長命のASP.NET 3.5アプリケーションを用意しています。新しいマシンは、古いもの(IP、DNSなど)の識別を前提とします。ASP.NETサーバーの移行

クライアントは、サイトを数時間、場合によっては数日間維持します。私が恐れているのは、この切り替えを行うと、MachineKeyが変更されるため、突然すべてのビューステートが検証されなくなるということです。

このような混乱を避けることはできますか?新しいサーバーのmachineKeyを、現在使用しているものと同じにすることはできますか?私はそれが自動生成されていると思う - 私はそれが何かを見つけることができますか?

これは価値がありますか?これは、ユーザーが長い間ウェブサイトにアクセスすることを期待してはいけないという吸盤状態ですか?

答えて

4
<system.web> 
    <machineKey validationKey="Generate on your own" decryptionKey="Generate on your own" validation="3DES"/> 
</system.web> 

あなたは正しいです、移動はすべての承認クッキーを無効にします。ビューステートの暗号化を有効にしない限り、viewstateは正常に動作します。

machinekey属性を追加すると、サイトがホストされている場所に関係なく、そのマシンキーが同じであれば、暗号化と復号化に問題はありません。さらに、サイトが負荷分散環境でホストされている場合は、これを使用する/使用する必要があります。

msdn.microsoft.com/en-us/library/ms998288.aspx

2

典型的には、このような移行は、完全な停電であろう。ほとんどのサイトではこれを発表し、カットオーバー中に一時停止ページを表示しています。また、どちらのマシンも使用できない時間があると想像します。そのため、マシンキーとビューステートに関係なく、要求は失敗します。私はあなたに完全な停止を強制することをお勧めします。これにより、ライブになる前に新しいサーバーをテストすることもできます。

また、新しいマシンに新しいIPを与えることもできますし、既存の接続は古いものにとどまりませんが、ゆっくりと新しいトラフィックを新しいマシンに強制することもできます。これには、これを管理するための何らかの種類のデバイス(ルーター、コンテンツスイッチなど)が必要です。あなたのサーバーがそのようなデバイスの背後にあるかどうかは不明です。

質問に戻ると、はい、手動でマシンキーを設定できます。これはmachine.configにあります。古いマシンから、このセクションを取り、それをコピー:

<machineKey 
validationKey="..."   
decryptionKey="..." 
... 
/> 

これは通常、次の場所にあります。 C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727の\ CONFIG \ machine.configの

をここにはsame machine Keyの使用に関する記事があります。

+0

これはありがとうございました - 私は今、鍵を設定するだけで、私が心配している問題をより早く起こすことができました。つまり、移行は正常に行われますが、既存のサーバーに対する要求は失敗します。 – n8wrl

2

machineKeyを明示的に設定することができます。実際には、Webファームと異なるセッション状態モデルを使用しているときには非常に一般的です。 Here's a link(記事の末尾付近)で行う方法について説明します。

残念ながら、現在のマシンキーを手動で生成していない場合は、アプリケーションドメインが再起動するたびにランダムに生成されます(つまり、サーバーが正常に動作していれば、検証の問題が発生する可能性があります)。

ただし、

HKU \ SID \ SOFTWARE \マイクロソフト\ ASP.NET \ 2.0.50727でレジストリを調べて使用されている現在のmachineKeyを発見することができます。0

(IIS6を使用している場合)注意するならば、新しいキーを同じキーで設定したり、移行したり、何も悪くならないかもしれません。しかし、それらは有名な最後の言葉です。)

関連する問題