我有点困惑。我没有明确设置Web.config <pages ViewStateEncryptionMode="Always" />
,因此this MSDN page表示它应该默认为Auto
。 This MSDN page表示如果控件通过调用Auto
方法请求加密,则RegisterRequiresViewStateEncryption
应该使视图状态信息加密。但是,我的控件都没有调用该方法。所以看起来我的观点状态实际上应该不加密。
但是,当我将视图状态复制/粘贴到各种online viewstate decoders之一时,我被告知视图状态序列化数据无效。那么,我的viewstate是否加密?有一些明显的方法可以说明吗?是否更改了默认的ASP.net行为以通过defualt对viewstate进行编码,除非您禁用它?
答案 0 :(得分:3)
如果将其设置为Always或auto,则所有控制状态都将被加密。调用RegisterRequiresViewStateEncryption
视图状态的所有控件都将加密,而不是Auto / Always。如果您的“自定义控件”需要加密,请调用此方法
在MSDN
上查看如果您正在开发处理潜在敏感信息的自定义控件,请调用RegisterRequiresViewStateEncryption方法向页面注册控件,并确保控件的视图状态已加密。
整个页面状态将是 加密,如果 ViewStateEncryptionMode设置为Auto 或永远。
答案 1 :(得分:2)
强制启用它,看看你是否从解码器中得到了相同的错误。
强行关闭它,看它现在是否解码。
我认为这会给你一个你正在寻找的答案。
答案 2 :(得分:0)
可以在machine.config上找到默认设置,这是所有网络应用的常规超级配置。使用您的web.config,您可以覆盖它。你可以打开你的一个网站并查看内部。
在这里你可以找到machine.config:
%WinDir%\Microsoft.NET\Framework\<FrameworkVersion>\CONFIG