通过WebSeal的ASP.Net应用程序正在改变viewstate值

时间:2009-07-29 14:16:30

标签: asp.net viewstate

我有一个需要在WebSeal上运行的ASP.Net 3.5应用程序,它是一个Java反向代理应用程序,可以重新格式化传递给浏览器的页面中的URL,以便www.myserver.com的URL可以成为www .myserver.com / newlocation /家。它查找要在页面中修改的URL,并对重定向地址执行字符串替换。

我的问题是它也为页面上的__VIEWSTATE和__EVENTVALIDATION变量执行此操作。由于__VIEWSTATE数据在编码时在页面上看起来像这样:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzA5MTE.......

WebSeal将其视为URL,因为它以斜杠字符开头,并在呈现页面时以此形式显示:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/newlocation/homewEPDwUJNzA5MTE.......

这会导致视图状态数据无效并且页面失败。

我有没有办法捕获视图状态值并在某些服务器端将其翻转回来?我认为加密视图状态也可以工作,但是只要斜线出现导致INPUT标记值,就会发生这种情况。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我建议编写自己的PageStateProvider类。浏览此处获取更多信息: http://msdn.microsoft.com/en-us/library/system.web.ui.pagestatepersister.aspx

您可以编写仍然将您的视图状态写入隐藏字段,但请确保它始终以webseal不会解释为URL的字符开头。或者,您可以将ViewState存储在服务器上(会话,数据库,Velocity缓存等)。

HTH。

相关问题