ASP.NET服务器迁移

ASP.NET服务器迁移,asp.net,machinekey,Asp.net,Machinekey,我们有一个长寿命的ASP.NET 3.5应用程序,我们正在从运行Windows 2005+IIS 6的物理服务器迁移到运行Windows 2008+IIS7的虚拟服务器。新机器将采用旧机器的标识—IP、DNS等 我们的客户让我们的网站运行数小时,有时甚至几天。我担心的是,当我们进行切换时,突然所有的视图状态将无法验证,因为MachineKey将发生更改 这种破坏是可以避免的吗?我可以“设置”新服务器的machineKey与当前使用的machineKey相同吗?我想它是自动生成的-我能找出它是什么

我们有一个长寿命的ASP.NET 3.5应用程序,我们正在从运行Windows 2005+IIS 6的物理服务器迁移到运行Windows 2008+IIS7的虚拟服务器。新机器将采用旧机器的标识—IP、DNS等

我们的客户让我们的网站运行数小时,有时甚至几天。我担心的是,当我们进行切换时,突然所有的视图状态将无法验证,因为MachineKey将发生更改

这种破坏是可以避免的吗?我可以“设置”新服务器的machineKey与当前使用的machineKey相同吗?我想它是自动生成的-我能找出它是什么吗

或者,这是否值得呢?这是一种用户不应该期望能够在网站上停留那么长时间的情况吗?


<system.web>
    <machineKey validationKey="Generate on your own" decryptionKey="Generate on your own" validation="3DES"/>
</system.web>
您是正确的,移动将使所有授权cookie无效。我相信,除非您打开了viewstate加密,否则viewstate就可以了

如果添加machinekey属性,那么站点位于何处并不重要,只要机器密钥相同,加密和解密就可以了。此外,如果您的站点托管在负载平衡的环境中,则需要/应该使用此选项


像这样的迁移通常会导致完全停机。大多数网站都宣布了这一点,并在切换期间发布了一个临时停机页面。此外,我设想有一段时间两台机器都不可用,因此无论机器密钥和视图状态如何,请求都会失败。我建议您强制全面停机。这还允许您在新服务器上线之前对其进行测试

或者,您可以为新机器提供新的IP,并缓慢地将新流量强制到新机器,而现有连接将保留在旧机器上。这需要某种设备(路由器、内容交换机等)来管理。不确定您的服务器是否位于这样的设备后面

但回到你的问题,是的,你可以手动设置机器钥匙。这在machine.config中。从旧机器上取下此部分并复制:

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

它通常位于以下位置: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.CONFIG


下面是一篇关于使用的文章。

您可以明确地设置machineKey,事实上,当您在web场中使用不同的会话状态模型时,这是非常常见的。关于如何做到这一点(接近文章底部)

不幸的是,如果您尚未手动生成当前machineKey,则每次应用程序域重新启动时都会随机生成该machineKey(这意味着如果您的服务器发生故障,您现在很容易遇到验证问题)

但是,您可以通过在注册表中查找以下位置来发现当前正在使用的machineKey:

HKU\SID\Software\Microsoft\ASP.NET\2.0.50727.0


(如果您使用的是IIS6)。如果你小心的话,你可以用相同的密钥设置新的盒子,迁移过来,并且不会出现任何问题。但这些都是著名的遗言;)

谢谢你,我意识到现在设置钥匙只会让我担心的问题更快发生。也就是说,迁移将顺利进行,但现有服务器上的请求将失败。