代码之家  ›  专栏  ›  技术社区  ›  n8wrl

ASP.NET服务器迁移

  •  4
  • n8wrl  · 技术社区  · 15 年前

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

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

    或者,这是否值得——这是一种吸吮式的情况,用户不应该期望能够访问一个网站那么长时间?

    3 回复  |  直到 15 年前
        1
  •  4
  •   andrewWinn    15 年前
    <system.web>
        <machineKey validationKey="Generate on your own" decryptionKey="Generate on your own" validation="3DES"/>
    </system.web>
    

    您是正确的,移动将使所有授权cookie无效。我相信,除非您打开了viewstate加密,否则viewstate就可以了。

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

        2
  •  2
  •   Mike Ohlsen    15 年前

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

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

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

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

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

    下面是一篇关于使用 same machine Key .

        3
  •  2
  •   womp    15 年前

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

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

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

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

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

    推荐文章