在预编译 (Pre-Compiled) 的ASP.NET应用中页面设置失效的问题

我的客户有一个验证视图(viewstate)MAC失败的问题。作为应急措施,他想在找出最终的解决方案之前,禁用视图MAC验证。然而当他在配置文件中添加了如下的设置后,还是有问题。

<pages validateRequest="false" enableEventValidation="false" enableViewStateMac="false" viewStateEncryptionMode="Never">

客户的应用是一个预编译 (Pre_compiled) 的ASP.NET应用,且可更新(updateable)的选项被禁用。看了由编译器通过上述设置生成的代码后,我们发现这些设置是硬编码。所以这意味着仅仅简单地在web.config里添加上述设置,并不会影响预编译的应用。为了使其生效,必须重新编译整个应用。

  [DebuggerNonUserCode]

private void __BuildControlTree(default_aspx __ctrl)

{

__ctrl.EnableViewStateMac = false;

__ctrl.EnableEventValidation = false;

__ctrl.ViewStateEncryptionMode = ViewStateEncryptionMode.Never;

这是一个By-Design的行为。

ASP.NET预编译概述如下:

https://msdn.microsoft.com/en-us/library/bb398860.aspx

Wei Zhao from AGPC DSI Team