ASP.NET:COM preSS的ViewState [英] ASP.NET: Compress ViewState

查看:119
本文介绍了ASP.NET:COM preSS的ViewState的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是PSS的ASP.NET ViewState的内容融为一体$ P $最新,最好的方法是什么?

有关这种表现是什么?是否值得以保持快速的页面,并尽量减少数据流量?

我怎样才能让:

 <输入类型=隐藏的名字=__ VIEWSTATEID =__ VIEWSTATE
值=/ wEPDwUKMTM4Mjc3NDEyOWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgkFLGN0b
DAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCdXQxBSxjdGwwMCRDb250ZW50UGxhY2VIb
2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0MQUsY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyX01haW5Db250ZW50J
FJhZEJ1dDIFLGN0bDAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCdXQyBSxjdGwwMCRDb
250ZW50UGxhY2VIb2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0MwUsY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyX
01haW5Db250ZW50JFJhZEJ1dDQFLGN0bDAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCd
XQ0BSxjdGwwMCRDb250ZW50UGxhY2VIb2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0NQUsY3RsMDAkQ29udGVud
FBsYWNlSG9sZGVyX01haW5Db250ZW50JFJhZEJ1dDXz21BS0eJ7991pzjjj4VXbs2fGBw ==/>

进入这样的sometning:

 <输入类型=隐藏的名字=__ VIEWSTATEID =__ VIEWSTATE
值=/ wEPDwUKMTM4Mjc3N ==/>


解决方案

再次一些研究这个后我总结我的发现在博客中,关于后的的COM pressing视图状态

要保存pssed视图状态一个COM $ P $,这就是我所做的:

 保护覆盖无效SavePageStateToPersistenceMedium(对象的状态){
    SaveCom pressedPageState(州);
}私人无效SaveCom pressedPageState(对象的状态){
    字节[] viewStateBytes;
    使用(MemoryStream的流=新的MemoryStream()){
        ObjectStateFormatter格式=新ObjectStateFormatter();
        formatter.Serialize(流态);
        viewStateBytes = stream.ToArray();
    }    字节[] COM pressed = com的pressionHelper.Com preSS(viewStateBytes);
    串COM pressedBase64 = Convert.ToBase64String(COM pressed);    ClientScript.RegisterHiddenField(ViewStateFieldName,玉米pressedBase64);
}

而对于装载部分,这code使得它为我工作:

 保护覆盖对象的LoadPageStateFromPersistenceMedium(){
    返回LoadCom pressedPageState();
}私有对象LoadCom pressedPageState(){
    字符串的ViewState =的Request.Form [ViewStateFieldName]
    如果(string.IsNullOrEmpty(视图状态)){
        返回的String.Empty;
    }    字节[] DECOM pressed = com的pressionHelper.Decom preSS(视图状态);
    字符串DECOM pressedBase64 = Convert.ToBase64String(DECOM pressed);    ObjectStateFormatter格式=新ObjectStateFormatter();
    返回formatter.Deserialize(DECOM pressedBase64);
}

What are the latest and greatest ways to compress the ASP.NET ViewState content?

What about the performance of this? Is it worth it to keep the pages quick and minimize data-traffic?

How can I make:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
value="/wEPDwUKMTM4Mjc3NDEyOWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgkFLGN0b
DAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCdXQxBSxjdGwwMCRDb250ZW50UGxhY2VIb
2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0MQUsY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyX01haW5Db250ZW50J
FJhZEJ1dDIFLGN0bDAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCdXQyBSxjdGwwMCRDb
250ZW50UGxhY2VIb2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0MwUsY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyX
01haW5Db250ZW50JFJhZEJ1dDQFLGN0bDAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCd
XQ0BSxjdGwwMCRDb250ZW50UGxhY2VIb2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0NQUsY3RsMDAkQ29udGVud
FBsYWNlSG9sZGVyX01haW5Db250ZW50JFJhZEJ1dDXz21BS0eJ7991pzjjj4VXbs2fGBw==" />

Into sometning like this:

<input type="hidden" name="__VIEWSTATE"  id="__VIEWSTATE" 
value="/wEPDwUKMTM4Mjc3N==" />

解决方案

Again, after some research into this I summarized my findings in a blog-post about Compressing View State.

To save a compressed View State, this is what I did:

protected override void SavePageStateToPersistenceMedium(object state) {
    SaveCompressedPageState(state);
}

private void SaveCompressedPageState(object state) {
    byte[] viewStateBytes;
    using(MemoryStream stream = new MemoryStream()) {
        ObjectStateFormatter formatter = new ObjectStateFormatter();
        formatter.Serialize(stream, state);
        viewStateBytes = stream.ToArray();
    }

    byte[] compressed = CompressionHelper.Compress(viewStateBytes);
    string compressedBase64 = Convert.ToBase64String(compressed);

    ClientScript.RegisterHiddenField(ViewStateFieldName, compressedBase64);
}

And for the loading-part, this code made it work for me:

protected override object LoadPageStateFromPersistenceMedium() {
    return LoadCompressedPageState();
}

private object LoadCompressedPageState() {
    string viewState = Request.Form[ViewStateFieldName];
    if(string.IsNullOrEmpty(viewState)) {
        return string.Empty;
    }

    byte[] decompressed = CompressionHelper.Decompress(viewState);
    string decompressedBase64 = Convert.ToBase64String(decompressed);

    ObjectStateFormatter formatter = new ObjectStateFormatter();
    return formatter.Deserialize(decompressedBase64);
}

这篇关于ASP.NET:COM preSS的ViewState的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆