题
我需要抓住base64-encoded表示的视图状态中。显然,这将不是可用的,直到相当延迟的请求的生命周期,这是确定。
例如,如果输出该网页包括:
<input type="hidden" name="__VIEWSTATE"
id="__VIEWSTATE" value="/wEPDwUJODU0Njc5MD...==" />
我需要一办法在服务器上获得的价值 "/wEPDwUJODU0Njc5MD...=="
为了澄清,我需要这个的价值时,页面正在呈现的,不在回发。例如我需要知道的视图状态的价值,是正在 发送 到客户,而不视图状态中,我得到后面,从他们。
解决方案
雷克斯,我怀疑一个很好的地方开始寻找解决方案, 压缩的视图状态 -他们抓视图状态服务器上之前发送给客户和gzip压缩。这正是你想要的。
- 斯科特Hanselman在视图状态压缩 (2005)
- 视图状态压缩系统。IO.压缩 (2007)
其他提示
看看这个 博客 在提交人描述了一种方法,用于压倒一切的默认行为产生的视图状态,而不是演示了如何保存在服务器上届会议对象。
在ASP.NET 2.0版,视图状态是保存 后裔的PageStatePersister 类。这类是一个抽象的类 为保存和装载和ViewsState 有两个实施后裔 这一类。净框架,名为 HiddenFieldPageStatePersister和 SessionPageStatePersister.通过默认 HiddenFieldPageStatePersister用 省/视图状态加载的信息, 但我们可以很容易地得到 SessionPageStatePersister工作, 保存视图状态在会议的对象。
虽然我没有测试他的代码,就似乎显示你想要什么:一种方法来获得视图状态码,同时仍在服务器之前,回发。
我启用了压缩的下列相似的条款,这些帐上。关键的来访问的视图状态之前应用程序发送这是压倒一切的这个方法;
protected override void SavePageStateToPersistenceMedium(object viewState)
你可以打电话的基础的方法在这一重写,然后添加任何额外的逻辑,你需要来处理视图状态中。