chr*_*isk 7 asp.net cryptography web-farm eventvalidation .net-4.5
我们在其中一个Web服务器中安装了.net 4.5 Framework.我们的应用程序针对.net 4.0,并在负载均衡器后面运行多个服务器.
安装后,我们收到一些POST请求的以下错误消息
error_name = System.ArgumentException error_message =无效的回发或回调参数.使用配置或页面中的<%@ Page EnableEventValidation ="true"%>启用事件验证.出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证.error_details =来源:System.Web
当从安装了.net 4.5的服务器请求时,请求正文中的__EVENTVALIDATION值不同.MSDN提到.net 4.5中的加密更改使用了opt in配置,因此默认情况下它应该向后兼容.
在没有禁用事件验证的情况下是否有配置更改,我需要为_EVENTVALIDATION执行与安装.net 4.5的计算机上的行为相同,因为它只使用.net 4.0?
小智 6
我遇到了同样的问题,因为我们正在从2003年(.NET 4.0)将我们的服务器场迁移到Windows 2012(.NET 4.5).查看ClientScriptManager,事件验证代码已发生很大变化.
解决此问题的方法是添加appSetting以使用此处所述的旧版事件验证兼容性
<appSettings>
<add key="aspnet:UseLegacyEventValidationCompatibility" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
现在,无论是由.NET 4.0还是4.5生成,我的页面中为事件验证生成的值都是相同的
有趣的问题,我会尝试将某些行为冻结到特定版本的框架(在 web.config 中)。
<httpRuntime requestValidationMode="4.0" />
Run Code Online (Sandbox Code Playgroud)
<compilation targetFramework="4.0">
Run Code Online (Sandbox Code Playgroud)
<pages controlRenderingCompatibilityVersion="4.0"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2691 次 |
| 最近记录: |