用微信掃一掃

聊城seo,聊城網站推廣

400-6065-301

慕楓網絡-聊城seo優化與網站建設服務商
寧波網站建設|寧波seo|24小時熱線:聊城seo,聊城網站優化
寧波seo,寧波網站優化
聊城seo,聊城網站優化
查看ASP.NET服務器控件的狀態
mf_web |2019/02/18
    有必要保留網頁及其控件的狀態信息。但是,由于Web應用程序是在HTTP協議的頂層創建的,這是一種無狀態協議,因此很難保留狀態信息。為了解決這個問題,ASP.NET 2.0技術提供了多種解決方案,如使用會話、cookie、視圖狀態、控件狀態、隱藏域、查詢字符串、個性化用戶配置(配置文件)等。用于用ASP創建服務器控件。NET 2.0技術,保存狀態信息也是非常重要的。它的主要解決方案是使用視圖狀態和控制狀態,本文詳細闡述了視圖狀態的基本知識,并通過典型應用介紹了視圖狀態的應用方法。
    
    視圖狀態概述
    
    視圖狀態是一種非常重要的技術,它使頁面中的頁面和控件能夠在從服務器到客戶機和從客戶機來回的往返過程中維護狀態信息。這允許您在Web等無狀態環境中創建一種狀態和持久的頁面效果。本節主要介紹操作機制。SM、應用方法、數據類型、性能和安全性、視圖狀態分區(這是ASP的一個新特性)。NET 2.0),視圖狀態的優缺點。
    
    (1)操作機構
    
    視圖狀態的具體操作過程如下:每當用戶請求一個.aspx頁時,該頁。NET Framework首先將相關控件的狀態數據序列化為一個字符串,然后將其作為名為viewstate的隱藏域的值發送給客戶端。如果是第一次請求該頁,則服務器控件也將第一次執行。名為viewstate的隱藏域只包含控件的默認信息,通常為空或空。在隨后的echo事件中,以前echo中服務器控件可用的屬性的狀態保存在viewstate中。這允許服務器控件在當前處理的返回事件發生之前監視狀態。這些流程負責。NET框架,供用戶執行。ASPX頁具有連續執行的效果。
    
    (2)存儲的數據類型
    
    視圖狀態可以存儲多種類型的數據,為了提高操作效率,視圖狀態本身還包括一組針對常見類型的優化序列化方法。視圖狀態序列化支持的默認數據類型包括string、int32、unit、color、array、arraylist、hashtable和typeconverter。
    
    視圖狀態已針對包含上面列出的類型的數組、數組列表和哈希表對象進行了優化。因此,在控件中使用視圖狀態時,應嘗試限制使用上面提到的簡單數據類型以及優化的類型。在這里,我們需要突出顯示自定義類型轉換器type converter,它提供一個將值類型轉換為其他類型并訪問標準值和子屬性的化方法。例如,可以使用TypeConverter將字符串轉換為值,或將值轉換為字符串。如果沒有類型轉換器,頁框架將使用由提供的二進制序列化函數。NET框架用于序列化對象,這是一個非常資源密集的過程。
    
    (3)履約與擔保
    
    在使用視圖狀態時,必須先對對象進行序列化,然后通過返回進行反序列化。因此,我們需要了解視圖狀態的性能。默認情況下,將啟用控件的視圖狀態,如果不需要使用視圖狀態,則最好將其關閉。在以下情況下,將不再需要視圖狀態:(1)控件不需要OT定義服務器端事件(當控件事件是客戶端事件且不參與返回時);(2)控件沒有動態或數據綁定屬性值。關閉視圖狀態的方法是將控件的EnableViewState的值設置為false。
    
    默認情況下,在編譯運行期間,當視圖狀態的內容發送到客戶端時,讀卡器將在頁面的HTML代碼中看到%u view state隱藏的域內容。這些字符串是的結果,沒有意義。NET框架通過base64位編碼對相關內容進行編碼。這些內容通過明文在客戶端和服務器之間來回發送。在某些情況下,例如涉及到密碼、帳戶、連接字符串等敏感內容時,使用默認模式是不安全的。為此,請執行。NET框架為ViewState提供了兩種安全機制:
    
     U00B7驗證機制:
    
    這個。NET框架可以通過設置enableViewStateMac=true屬性向ViewState數據中添加哈希代碼來指示(哈希代碼是長度為160位的sha1類型,因此嚴重影響執行性能)。當發生返回事件時,將重新生成哈希代碼,該哈希代碼必須與原始哈希代碼匹配。這樣,它可以有效地驗證在傳輸期間是否可以篡改viewstate。默認情況下,為。NET框架使用sha1算法生成viewstate散列代碼,另外,還可以通過在machine.config文件中設置<machinekey>來選擇md5算法,如下:<machinekey validation=md5/>,md5算法的性能優于sha1算法,但也不安全。
    
     U00B7加密機制
    
    加密用于保護viewstate字段中的實際數據值。首先,必須如上所述將enableviewstatmac設置為true。然后,將machinekey驗證類型設置為3des,即<machinekey validation key=autogenerate decryption key=autogenerate validation=3des/>,這表示ASP.NET使用3des加密算法加密viewstate值。
    
    (4)視圖狀態劃分
    
    上面介紹了一些視圖狀態的基本知識,但是有些讀者可能會感到困惑:如果在某些情況下視圖狀態數據變得非常大呢顯然,會有一些意想不到的結果。為此,ASP。NET 2.0添加了一個名為視圖狀態分區的新函數。如果視圖狀態中的數據量太大,視圖狀態分區會自動將數據劃分為多個塊,并將它們放置在多個隱藏字段中。
    
    若要啟用視圖狀態分區,請將MaxPageStateFieldLength屬性設置為單個視圖狀態字段中允許的最大大小(以字節為單位)。將頁面發回服務器時,頁面將在頁面初始化期間分析視圖狀態字符串,并還原頁面中的屬性信息。默認設置為-1,這意味著沒有最大大小,視圖狀態不分為多個塊。
    
    (5)利弊
    
    使用視圖狀態有三個優點:第一,與應用程序和會話相比,服務器資源消耗更少,因為視圖狀態數據被寫入客戶端計算機。易于維護。默認情況下,為。NET系統自動實現對控制狀態數據的維護。增強的安全功能。視圖狀態下的值為Unicode實現進行哈希、壓縮和編碼,這比使用隱藏域更安全。
    
    使用視圖狀態有三個缺點:第一,性能考慮。因為視圖狀態存儲在頁面本身,所以如果存儲較大的值,即使視圖狀態是分區的,用戶在顯示和發送頁面時也可能會減慢速度。設備限制。移動設備可能沒有足夠的內存容量來存儲大量的視圖狀態數據。因此,其他實現將用于移動設備上的服務器控件。潛在的安全風險。視圖狀態存儲在頁面上的一個或多個隱藏域中。盡管視圖狀態以哈希格式存儲數據,但可以填塞紅色帶有。如果您直接查看頁面輸出源,您可以在隱藏域中看到信息,這會導致潛在的安全問題。
    
    原網企網文章,本文地址:http://www.wangqi.com/html/2006-09/7016.htm,轉載請注明出處。
    

成為你更加專業的技術合伙人

友情鏈接:

Copyright ? 2016-2017 慕楓網絡 浙ICP備15047023號-4

拍电影赚钱还是电视剧