Share via


IStateFormatter Arabirim

Tanım

Bir nesne grafının seri hale getirmek ve seri durumdan çıkarılması için bir türün uyguladığı yöntemleri tanımlar.

public interface class IStateFormatter
public interface IStateFormatter
type IStateFormatter = interface
Public Interface IStateFormatter
Türetilmiş

Örnekler

Aşağıdaki kod örneği, görünüm ve denetim durumunu Web sunucusundaki bir PageStatePersister akışa kaydeden bir nesnenin nasıl oluşturulacağını gösterir. sınıfı, StreamPageStatePersister sayfa durumu bilgilerini ayıklamak ve kaydetmek için ve Save yöntemlerinin nasıl geçersiz kılınduğunu Load gösterir. Bu yöntemler, görünüm durumunu seri hale getirmek ve seri durumdan kaldırmak için sınıfından devralınan PageStatePersister arabirimini kullanırIStateFormatter. Bu kod örneği, sınıfı için PageStatePersister sağlanan daha büyük bir örneğin parçasıdır.

namespace Samples.AspNet.CS
{

    using System;
    using System.IO;
    using System.Security.Permissions;
    using System.Web;
    using System.Web.UI;

    //
    // The StreamPageStatePersister is an example view state
    // persistence mechanism that persists view and control
    // state on the Web server.
    //
    [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
    public class StreamPageStatePersister : PageStatePersister
    {

        public StreamPageStatePersister(Page page)
            : base(page)
        {
        }
        //
        // Load ViewState and ControlState.
        //
        public override void Load()
        {
            Stream stateStream = GetSecureStream();

            // Read the state string, using the StateFormatter.
            StreamReader reader = new StreamReader(stateStream);

            IStateFormatter formatter = this.StateFormatter;
            string fileContents = reader.ReadToEnd();

            // Deserilize returns the Pair object that is serialized in
            // the Save method.
            Pair statePair = (Pair)formatter.Deserialize(fileContents);

            ViewState = statePair.First;
            ControlState = statePair.Second;
            reader.Close();
            stateStream.Close();
        }
        //
        // Persist any ViewState and ControlState.
        //
        public override void Save()
        {

            if (ViewState != null || ControlState != null)
            {
                if (Page.Session != null)
                {
                    Stream stateStream = GetSecureStream();

                    StreamWriter writer = new StreamWriter(stateStream);

                    IStateFormatter formatter = this.StateFormatter;
                    Pair statePair = new Pair(ViewState, ControlState);

                    // Serialize the statePair object to a string.
                    string serializedState = formatter.Serialize(statePair);

                    writer.Write(serializedState);
                    writer.Close();
                    stateStream.Close();
                }
                else
                {
                    throw new InvalidOperationException("Session needed for StreamPageStatePersister.");
                }
            }
        }
        // Return a secure Stream for your environment.
        private Stream GetSecureStream()
        {
            // You must provide the implementation to build
            // a secure Stream for your environment.
            return null;
        }
    }
}
Imports System.IO
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI

Namespace Samples.AspNet.VB

    ' The StreamPageStatePersister is an example view state
    ' persistence mechanism that persists view and control
    ' state on the Web server.
    '
    <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public Class StreamPageStatePersister
        Inherits PageStatePersister


        Public Sub New(ByVal page As Page)
            MyBase.New(page)
        End Sub

        '
        ' Load ViewState and ControlState.
        '
        Public Overrides Sub Load()

            Dim stateStream As Stream
            stateStream = GetSecureStream()

            ' Read the state string, using the StateFormatter.
            Dim reader As New StreamReader(stateStream)

            Dim serializedStatePair As String
            serializedStatePair = reader.ReadToEnd
            Dim statePair As Pair

            Dim formatter As IStateFormatter
            formatter = Me.StateFormatter

            ' Deserilize returns the Pair object that is serialized in
            ' the Save method.      
            statePair = CType(formatter.Deserialize(serializedStatePair), Pair)

            ViewState = statePair.First
            ControlState = statePair.Second
            reader.Close()
            stateStream.Close()
        End Sub

        '
        ' Persist any ViewState and ControlState.
        '
        Public Overrides Sub Save()

            If Not (ViewState Is Nothing) OrElse Not (ControlState Is Nothing) Then
                If Not (Page.Session Is Nothing) Then

                    Dim stateStream As Stream
                    stateStream = GetSecureStream()

                    ' Write a state string, using the StateFormatter.
                    Dim writer As New StreamWriter(stateStream)

                    Dim formatter As IStateFormatter
                    formatter = Me.StateFormatter

                    Dim statePair As New Pair(ViewState, ControlState)

                    Dim serializedState As String
                    serializedState = formatter.Serialize(statePair)

                    writer.Write(serializedState)
                    writer.Close()
                    stateStream.Close()
                Else
                    Throw New InvalidOperationException("Session needed for StreamPageStatePersister.")
                End If
            End If
        End Sub
        ' Return a secure Stream for your environment.
        Private Function GetSecureStream() As Stream
            ' You must provide the implementation to build
            ' a secure Stream for your environment.
            Return Nothing
        End Function
    End Class
End Namespace

Açıklamalar

Arabirim, IStateFormatter bir ASP.NET Web sunucusu denetiminin özelliğinde ViewState koruduğu durumu seri hale getirmek ve seri durumdan çıkarmak için bir türün uygulayabileceği yöntemleri tanımlar. Bu altyapı, istekler arasında bir ASP.NET sayfasının durumunu korumak için sınıfından türetilen PageStatePersister sınıflar tarafından kullanılır. Varsayılan olarak, ASP.NET sayfa durumu sınıfın bir örneği tarafından seri hale getirilir ve seri durumdan ObjectStateFormatter çıkarılır; ancak site ve bağdaştırıcı geliştiricileri bu işi gerçekleştirmek için arabirimi kendi türlerine uygulayabilir IStateFormatter .

Web sunucusu denetim durumu yönetimi ve görüntüleme durumu hakkında daha fazla bilgi için bkz. ASP.NET Durum Yönetimine Genel Bakış ve Dinamik Web Sunucusu Denetimleri ve Durumu Görüntüle.

Yöntemler

Deserialize(String)

Serileştirilmiş dize formundan bir nesne durumu grafını seri durumdan kaldırır.

Serialize(Object)

Web sunucusu denetim durumunu dize biçimine ASP.NET serileştirir.

Şunlara uygulanır

Ayrıca bkz.