我一直在研究一些ASP.NET用户控件,这些控件将集成到Sitecore CMS实例中。开发已经完成,使用一些伪aspx页面来托管控件,当项目部署到测试服务器上时,一切工作正常。
但是,当我们将模块集成到Sitecore中时,一些操作会导致“无效的视图状态”异常 - “base64字符串中的字符无效”。我已经在本地复制了这个,即在我的开发系统上,通过配置IIS来查看Sitecore项目,这让我相信它不是服务器问题,但显然我不能确定。
使用fiddler我可以看到POST请求不包含一个而是包含两个__VIEWSTATE字段,实际上__EVENTVALIDATION,__ EVENTTARGET和__EVENTARGUMENT在请求中各有两个实例。 __VIEWSTATE值是相同的,我可以解码内容(因此我假设失败是由于存在两个值,而不是其中任何一个中的错误)。 两个__EVENTVALIDATION值不同,但两者都有效(即它们解码),其他__EVENT字段为空。
如果我从控件中删除UpdatePanels然后eveything工作'OK' - 显然现在没有AJAX部分页面更新,虽然这不是理想的。 如果我在我的浏览器中使用代码中的UpdatePanels禁用Jscript,那么一切都“OK”。
任何人都可以对此有所了解或指出我正确的方向 - 我现在没有想法,如果我无法对其进行排序,我将不得不删除UpdatePanels,看看我们是否可以接受结果,不理想。
[2012年2月14日更新] 我一直在网上搜寻,但没有找到任何有同样问题的人。我以为我已经击中了金with this post,但这又对我的问题没有任何影响。所有迹象都表明Sitecore上的AJAX应该可以正常工作,但我猜我们必须遇到配置问题。问题是我不是Sitecore开发人员,目前我没有访问权限(年假!)
答案 0 :(得分:1)
两个__VIEWSTATE
字段听起来非常像页面中有两个form
元素,可能是某些jQuery或AJAX交互的结果。
这篇文章听起来很相似: "Invalid Character in Base-64 String" using ASP.NET and C#
您使用的是ASP.NET AJAX吗?我会仔细检查JavaScript对DOM做了什么 - 它可能会插入额外的form
元素。