2012-02-13 53 views
1

我一直在研究一些将被集成到Sitecore CMS实例中的ASP.NET用户控件。开发已经完成,使用一些虚拟的aspx页面来托管控件,并且一切工作正常,在本地以及项目部署到测试服务器时。ASP.NET ViewState复制回发

但是,当我们将模块集成到Sitecore中时,一些操作会导致“无效的Viewstate”异常 - “base64字符串中的无效字符”。我已经在本地复制了这个,即在我的开发系统上,通过配置IIS来查看Sitecore项目,所以这让我相信这不是服务器问题,但显然我不能确定这一点。

使用fiddler我可以看到POST请求不包含一个而是两个__VIEWSTATE字段,事实上__EVENTVALIDATION,__EVENTTARGET和__EVENTARGUMENT在请求中都有两个实例。 __VIEWSTATE值是相同的,我可以解码内容(因此我认为失败是由于存在两个值,而不是任何一个中的错误)。 两个__EVENTVALIDATION值不同,但都是有效的(即它们解码),其他__EVENT字段为空。

如果我从控件中删除UpdatePanels,那么eveything的作品'OK' - 显然现在没有AJAX局部页面更新,尽管这并不理想。 如果我在浏览器中禁用了Jscript并且UpdatePanels返回代码中,那么再次一切都是'OK'。

任何人都可以对此有所了解,或者指引我朝着正确的方向 - 我现在不在意了,如果我无法排序,我将不得不移除UpdatePanels,看看我们是否可以忍受结果,不理想。

[更新14-02-2012]我一直在拖网,但并没有真正发现任何人有同样的问题。我以为我碰到了黄金with this post,但它再次对我的问题没有影响。所有迹象表明,Sitecore上的AJAX应该可以正常工作,但我猜测我们必须有配置问题。问题是我不是Sitecore开发者,目前我没有访问权(年假!)

+0

请提供代码示例。另外,你是使用UCs作为直UCs还是Sitecore子布局? – 2012-02-13 15:37:42

+0

提供代码示例可能是由于内容导致的问题 - 我正在创建一个虚拟控件以查看是否可以复制它,然后我可以将该代码发布。这些控件的开发就像是“正常”的用户控件一样 - 我根本没有对Sitecore做任何特殊的说明。 – DilbertDave 2012-02-13 15:43:10

+0

在Sitcore sublayouts中使用UCs吗?也就是说,你有一个可以引用一个或多个有问题的自定义UC的子布局吗? – 2012-02-13 15:58:16

回答

1

两个__VIEWSTATE字段听起来非常像您在页面中有两个form元素,可能是因为一些jQuery或AJAX交互。 "Invalid Character in Base-64 String" using ASP.NET and C#

您是否使用ASP.NET AJAX:

这个职位听起来很相似?我会仔细检查JavaScript对DOM做了什么 - 它可能会插入额外的form元素。

+0

我正在使用ASP.NET AJAX,但我看不到重复的'form'元素。我现在从那个客户那里走了出来(我是一名自由职业者),但我会把他们指回这个答案,看看是否能够解决问题。 – DilbertDave 2012-05-16 07:12:22