我有一个在负载均衡器后面的Web场中运行的站点。我在每个服务器上的每个web.config文件中都有一致的<machineKey />
元素。直到最近,所有服务器都运行.NET 4.0(未安装.NET 4.5)。今天早上,我向服务器场引入了一个新服务器,它运行与现有服务器完全相同的代码和配置,但安装了.NET 4.5.1。
我正在使用以下内容在所有服务器上定位.NET 4.0
<compilation targetFramework="4.0">
像这样的machineKey元素(为安全起见删除了键值):
<system.web>
<machineKey decryptionKey="..." validationKey="..." />
</system.web>
即使targetFramework为4.0,.NET 4.0也能以不同于.NET 4.5.1的方式处理验证或加密/解密吗?
答案 0 :(得分:2)
Web场中的每台计算机都必须安装完全相同的ASP.NET版本。不支持在服务器场中混合运行4.0和4.5.1。
也就是说,有两种方法可以执行升级:
将一半的服务器场脱机,将脱机计算机升级到4.5.1,然后同时将这些计算机重新引入服务器场,同时使剩余的一半服务器脱机。然后更新剩余的离线计算机并将其重新导入。
如果您绝对需要执行就地升级,请设置&lt; appSettings&gt;在Web.config(see MSDN)中将 aspnet:UseLegacyEventValidationCompatibility 切换为“true”,然后逐个将您的计算机升级到4.5.1。这不是受支持的配置,但应该可以使用。 势在必行您不保留此&lt; appSettings&gt;切换任何时间长度,因此请确保在升级完成后将其从Web.config中删除。