IStateFormatter Arabirim
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir türün bir nesne grafının seri durumdan çıkarılması ve seri durumdan çıkarılması için 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. |