您的位置:首页 > 编程语言 > ASP

asp.net 去除viewstate

2016-09-01 17:44 267 查看
生成了这么多的一段东西,这段东西对seo一点好处也没有。而我要做的就是去掉它,但有一点,去掉但不能让它原来的控件和内容都发生变化 看下这段代码:


生成了这么多的一段东西,这段东西对seo一点好处也没有。而我要做的就是去掉它,但有一点,去掉但不能让它原来的控件和内容都发生变化,比如说不能使用等等。所以我要做的仅仅是用另一种方式去保存这些数据。这是一段用base64编码的数据而并不是加密,我很好奇到底放了些什么东西在这里面。下面我开始破解这段代码。代码如下:复制代码代码如下:
ViewState 在 Page.SavePageStateToPersistenceMedium 方法中被保存, 回发时,在 Page.LoadPageStateFromPersistanceMedium 方法中被恢复。 这是我在看“木野狐”翻译的一篇文章中看到的,那么我们可以将其存到session中去,代码如下,来自网络,自做简单修改:
 // 去除VIEWSTATE 生成源代码,并保证VIEWSTATE 同时有效
        protected LosFormatter losFormatter = new LosFormatter();
        protected override object LoadPageStateFromPersistenceMedium()
        {
            string key = Request.Url + "__VIEWSTATE";
            if (Session[key] != null)
            {
                System.IO.MemoryStream stream = (System.IO.MemoryStream)Session[key];
                stream.Seek(0, System.IO.SeekOrigin.Begin);
                return losFormatter.Deserialize(stream);
            }
            return null;
        }
        protected override void SavePageStateToPersistenceMedium(object viewState)
        {
            string key = Request.Url + "__VIEWSTATE";
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            losFormatter.Serialize(stream, viewState);
            stream.Flush();
            Session[key] = stream;
        }那么看看现在的viewstate:<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id=" __VIEWSTATE" value="" />到这一步,我们实现我们要用的功能,去除viewstate,同时保持原先页面的使用。转自:http://www.itxuexi.com/tech/wangluobiancheng/dotnet/384501255272077.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: