通过 WebSeal 的 ASP.Net 应用程序正在更改视图状态值
Posted
技术标签:
【中文标题】通过 WebSeal 的 ASP.Net 应用程序正在更改视图状态值【英文标题】:ASP.Net app through WebSeal is changing viewstate value 【发布时间】:2010-11-15 02:15:51 【问题描述】:我有一个需要在 WebSeal 上运行的 ASP.Net 3.5 应用程序,这是一个 Java 反向代理应用程序,它重新格式化传递给浏览器的页面中的 URL,以便 www.myserver.com 的 URL 可以变为 www .myserver.com/newlocation/home。它在页面中查找要修改的 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】:我建议编写您自己的 PageStateProvider 类。浏览此处获取更多信息: http://msdn.microsoft.com/en-us/library/system.web.ui.pagestatepersister.aspx
您仍然可以将视图状态写入隐藏字段,但请确保它始终以 webseal 不会解释为 URL 的字符开头。或者,您可以将 ViewState 存储在服务器上(会话、数据库、速度缓存等)。
HTH。
【讨论】:
以上是关于通过 WebSeal 的 ASP.Net 应用程序正在更改视图状态值的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET开发实战——第一个ASP.NET应用《MyBlog》
通过 Internet 公开我的 asp.net 核心 Web 应用程序
如何使用 HTTP 连接通过托管在 IIS 上的 ASP.NET 成员身份保护 ASP.NET Web API [重复]