问题描述
|
我有点困惑。我没有显式设置Web.config
<pages ViewStateEncryptionMode=\"Always\" />
,因此此MSDN页面说它应默认为Auto
。这个MSDN页面上说,如果控件通过调用RegisterRequiresViewStateEncryption
方法请求加密,则Auto
应该导致对视图状态信息进行加密。但是,我的控件都没有调用该方法。因此,看来我的viewstate实际上不应该加密。
但是,当我将视图状态复制/粘贴到各种在线视图状态解码器之一中时,会被告知视图状态序列化数据无效。那么,我的viewstate是否已加密?有什么明显的方法可以告诉吗?除非将其禁用,否则默认的ASP.net行为是否已更改为通过defualt编码视图状态?
解决方法
如果将其设置为“始终”或“自动”,则所有控件状态都将被加密。所有调用“ 3”视图状态的控件将被加密,而与“自动/始终”无关。如果您的“自定义控件”需要加密,请调用此方法。
在MSDN上看到这个
如果要开发处理潜在敏感信息的自定义控件,请调用RegisterRequiresViewStateEncryption方法以在页面上注册该控件,并确保该控件的视图状态已加密。
整个页面状态为
如果加密
ViewStateEncryptionMode设置为Auto
或始终。
, 强制将其打开,看看是否从解码器中收到相同的错误。
强制关闭,看看它现在是否解码。
我认为这将为您提供所需的答案。
, 可以在您的machine.config上找到默认设置,这是所有Web应用程序的常规超级配置。使用您的web.config可以覆盖它。您可以打开您的网站之一,然后浏览内部。
在这里您可以找到machine.config:
%WinDir%\\Microsoft.NET\\Framework\\<FrameworkVersion>\\CONFIG