日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

Asp.net 2.0 ViewState原理_.Net教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:[JS.IntelliSense]VS2007(Orcas) So Cool
我很早以前就想找一個(gè)能夠像VS中C#一樣可以有很強(qiáng)的IntelliSense開(kāi)發(fā)工具來(lái)寫(xiě)腳本JS,但是到現(xiàn)在還沒(méi)有能夠真正找到一理想的工具。很早以前聽(tīng)說(shuō)VS2007能夠給我?guī)?lái)一點(diǎn)震撼,但是又有人說(shuō)那只是

ViewState相信大家都會(huì)使用,可ViewState到底是什么,又有多少人知道呢?

StateBag類(lèi)這個(gè)就不用多說(shuō)啦吧

在Asp.net 2.0 里,用到StateBag有三處

1 Control._viewState 這個(gè)就是大家使用的ViewState

2 WebControl.attrState這個(gè)是存放Attribute的

3 Style.statebag是存放樣式的
.......
Page生命周期內(nèi)SaveAllState時(shí)

需要先生成個(gè)Piar類(lèi),在調(diào)用this.SavePageStateToPersistenceMedium(pair1);時(shí),將其序列化

注意:Asp.net2.0只實(shí)現(xiàn)了HiddenFieldPageStatePersister,用戶(hù)可以從重寫(xiě),或者使用ControlAdapter提供其它形式的進(jìn)理機(jī)制

HiddenFieldPageStatePersister.Save時(shí)會(huì)過(guò)pair1進(jìn)行序列化

序列化時(shí),.net提供了三種方式

1使用密鑰

2.使用Mac

3不使用

//先序列化
this.Serialize(outputStream, stateGraph);

outputStream.SetLength(outputStream.Position);
byte[] buf = outputStream.GetBuffer();

int length = (int)outputStream.Length;

//判斷當(dāng)前Page.RequiresViewStateEncryptionInternal屬性返回值是不是需要加密
//如果未調(diào)用Page.RegisterRequiresViewStateEncryption,則默認(rèn)為false
//如果界面設(shè)置了RegisterRequiresViewStateEncryption和EnableViewStateMac,加密優(yōu)先于Mac

if ((this._page != null) && this._page.RequiresViewStateEncryptionInternal) //加密
{
buf = MachineKeySection.EncryptOrDecryptData(true, buf, this.GetMacKeyModifier(), 0, length);
length = buf.Length;
}
else if (((this._page != null) && this._page.EnableViewStateMac) || (this._macKeyBytes != null))//設(shè)置可以使用Mac
{
buf = MachineKeySection.GetEncodedData(buf, this.GetMacKeyModifier(), 0, ref length);
}

text = Convert.ToBase64String(buf, 0, length); // null of either

談到這,很多人要問(wèn)pair1里放的是什么,我畫(huà)了一幅圖,詳細(xì)說(shuō)明了一下


分享:徹底放棄IIS讓Apache也支持ASP.NET
Apache是目前廣泛使用的一種網(wǎng)絡(luò)服務(wù)器程序,不僅在UNIX/Linux平臺(tái)上被大量使用,而且在Windows平臺(tái)上也有許多站點(diǎn)放棄了IIS而轉(zhuǎn)向Apache。.NET是微軟推出的功能強(qiáng)大的開(kāi)發(fā)技術(shù),其目標(biāo)就是與Ja

來(lái)源:模板無(wú)憂(yōu)//所屬分類(lèi):.Net教程/更新時(shí)間:2008-08-22
相關(guān).Net教程