我的 SharePoint 2010 应用程序陷入了这个视图状态问题。
目前我创建了一个自定义母版页,它使用名为 Navigation 的自定义控件。导航控件 HTML 仅包含 3 个隐藏字段以存储数据。
当我为我的站点应用母版页时,我创建了一个列表,然后将一个三态工作流添加到列表中。在 Add a Workflow 屏幕 (/_layouts/Addwrkfl.aspx) 中选择三态工作流后,单击 OK 提交。
然后我收到了这个错误信息
视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。AutoGenerate 不能在集群中使用。
堆栈跟踪:
[ViewStateException: Invalid viewstate.
Client IP: 192.168.149.149
Port: 56086
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3)
ViewState: /wEWBAKi+o3/DAKVnOnXCwKa66m6DgKoxMKWBhUcn2XAshDSDMZdpDN35fWC8RHp
Referer: `http://localhost/_layouts/Addwrkfl.aspx?List=%7B2897B53B%2D16AF%2D47A9%2DB963%2DC9501432C5CA%7D`
Path: /_layouts/ItemRWfAssoc.aspx]
[HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.]
System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +148
System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +10977361
System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded() +205
*
我还删除了导航控件背后的所有代码,但问题仍然出现。似乎错误出现在执行任何 C# 代码之前。
如果我尝试从导航控件中删除 3 隐藏字段,问题就消失了。
任何人都可以帮助我解决这个问题吗?任何想法将不胜感激。
提前致谢。
仅供参考,我不使用 Web Farm 托管我的应用程序