Freigeben über


WebMethodAttribute.EnableSession-Eigenschaft

Zeigt an, ob der Sitzungszustand für eine XML-Webdienstmethode aktiviert ist.

Namespace: System.Web.Services
Assembly: System.Web.Services (in system.web.services.dll)

Syntax

'Declaration
Public Property EnableSession As Boolean
'Usage
Dim instance As WebMethodAttribute
Dim value As Boolean

value = instance.EnableSession

instance.EnableSession = value
public bool EnableSession { get; set; }
public:
property bool EnableSession {
    bool get ();
    void set (bool value);
}
/** @property */
public boolean get_EnableSession ()

/** @property */
public void set_EnableSession (boolean value)
public function get EnableSession () : boolean

public function set EnableSession (value : boolean)

Eigenschaftenwert

true, wenn der Sitzungszustand für eine XML-Webdienstmethode aktiviert ist. Der Standardwert ist false.

Hinweise

Um den Sitzungszustand im ASP.NET-HttpSessionState-Objekt zu speichern, muss der XML-Webdienst von WebService erben, und ein WebMethodAttribute muss auf die XML-Webdienstmethode angewendet werden, damit die EnableSession-Eigenschaft auf true festgelegt wird. Wenn der Sitzungszustand für eine XML-Webdienstmethode nicht benötigt wird, kann die Leistung u. U. durch Deaktivieren des Sitzungszustands verbessert werden.

Ein XML-Webdienstclient wird eindeutig durch ein HTTP-Cookie identifiziert, das von einem XML-Webdienst zurückgegeben wird. Damit ein XML-Webdienst den Sitzungszustand für einen Client beibehalten kann, muss der Client das Cookie beibehalten. Clients können das HTTP-Cookie empfangen, indem eine neue Instanz von CookieContainer erstellt wird und diese der CookieContainer-Eigenschaft der Proxyklasse vor dem Aufrufen der XML-Webdienstmethode zugeordnet wird. Wenn der Sitzungszustand auch dann beibehalten werden soll, wenn die Instanz der Proxyklasse den Gültigkeitsbereich verlässt, muss der Client das HTTP-Cookie zwischen Aufrufen des XML-Webdiensts beibehalten. Beispielsweise kann ein Web Forms-Client das HTTP-Cookie beibehalten, indem der CookieContainer im eigenen Sitzungszustand gespeichert wird. Da nicht alle XML-Webdienste den Sitzungszustand verwenden und Clients daher nicht immer die CookieContainer-Eigenschaft eines Clientproxys verwenden müssen, gibt die Dokumentation für den XML-Webdienst an, ob der Sitzungszustand verwendet wird.

Beispiel

Im folgenden Beispiel wird mithilfe des Sitzungszustands ermittelt, wie oft in einer bestimmten Sitzung auf die XML-Webdienstmethode SessionHitCounter zugegriffen wird.

<%@ WebService Language="VB" Class="Util" %>
 
Imports System.Web.Services

Public Class Util
    Inherits WebService
    
    <WebMethod(Description := "Per session Hit Counter", _
        EnableSession := True)> _
    Public Function SessionHitCounter() As Integer
        
        If Session("HitCounter") Is Nothing Then
            Session("HitCounter") = 1
        Else
            Session("HitCounter") = CInt(Session("HitCounter")) + 1
        End If
        Return CInt(Session("HitCounter"))
    End Function
End Class
<%@ WebService Language="C#" Class="Util" %>
 
 using System.Web.Services;
 
 public class Util: WebService {
   [ WebMethod(Description="Per session Hit Counter",EnableSession=true)]
    public int SessionHitCounter() {
       if (Session["HitCounter"] == null) {
          Session["HitCounter"] = 1;
       }
       else {
          Session["HitCounter"] = ((int) Session["HitCounter"]) + 1;
          }
       return ((int) Session["HitCounter"]);
    }   
 }

Im folgenden Codebeispiel wird ein Web Forms-Client eines XML-Webdiensts, der den Sitzungszustand verwendet, dargestellt. Der Client behält das HTTP-Cookie bei, das die Sitzung eindeutig identifiziert, indem diese im Sizungszustand des Clients gespeichert wird.

<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Net" %>

<html>

    <script runat=server>

        Public Sub EnterBtn_Click(src As Object, E As EventArgs) 

      ' Create a new instance of a proxy class for your XML Web service.
      Dim su As ServerUsage = new ServerUsage()
          Dim cookieJar As CookieContainer

      ' Check to see if the cookies have already been saved for this session.
      If (Session("CookieJar") Is Nothing) 
        cookieJar= new CookieContainer()
          Else
       cookieJar = Session("CookieJar")
      End If
   

        ' Assign the CookieContainer to the proxy class.
        su.CookieContainer = cookieJar

      ' Invoke an XML Web service method that uses session state and thus cookies.
      Dim count As Integer = su.PerSessionServiceUsage()         

      ' Store the cookies received in the session state for future retrieval by this session.
      Session("CookieJar") = cookieJar

          ' Populate the text box with the results from the call to the XML Web service method.
          SessionCount.Text = count.ToString()  
    End Sub
         
    </script>
    <body>
       <form runat=server ID="Form1">
           
             Click to bump up the Session Counter.
             <p>
             <asp:button text="Bump Up Counter" Onclick="EnterBtn_Click" runat=server ID="Button1" NAME="Button1"/>
             <p>
             <asp:label id="SessionCount"  runat=server/>
          
       </form>
    </body>
</html>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Net" %>

<html>

    <script runat="server">

        void EnterBtn_Click(Object Src, EventArgs E) 
    {
      // Create a new instance of a proxy class for your XML Web service.
      ServerUsage su = new ServerUsage();
          CookieContainer cookieJar;

      // Check to see if the cookies have already been saved for this session.
      if (Session["CookieJar"] == null) 
        cookieJar= new CookieContainer();
          else
       cookieJar = (CookieContainer) Session["CookieJar"];

        // Assign the CookieContainer to the proxy class.
        su.CookieContainer = cookieJar;

      // Invoke an XML Web service method that uses session state and thus cookies.
      int count = su.PerSessionServiceUsage();         

      // Store the cookies received in the session state for future retrieval by this session.
      Session["CookieJar"] = cookieJar;

          // Populate the text box with the results from the call to the XML Web service method.
          SessionCount.Text = count.ToString();  
        }
         
    </script>
    <body>
       <form runat=server ID="Form1">
           
             Click to bump up the Session Counter.
             <p>
             <asp:button text="Bump Up Counter" Onclick="EnterBtn_Click" runat=server ID="Button1" NAME="Button1"/>
             <p>
             <asp:label id="SessionCount"  runat=server/>
          
       </form>
    </body>
</html>

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

WebMethodAttribute-Klasse
WebMethodAttribute-Member
System.Web.Services-Namespace
CookieContainer