我有一个需要在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标记值,就会发生这种情况。
感谢您的帮助。
答案 0 :(得分:0)
我建议编写自己的PageStateProvider类。浏览此处获取更多信息: http://msdn.microsoft.com/en-us/library/system.web.ui.pagestatepersister.aspx
您可以编写仍然将您的视图状态写入隐藏字段,但请确保它始终以webseal不会解释为URL的字符开头。或者,您可以将ViewState存储在服务器上(会话,数据库,Velocity缓存等)。
HTH。