Freigeben über


Vorgehensweise: Zustandsverwaltung in Webdiensten, die mit ASP.NET erstellt wurden

Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.

Webdienste haben Zugriff auf die gleichen Zustandsverwaltungsoptionen wie andere ASP.NET-Anwendungen, wenn die Klasse, die den Webdienst implementiert, von der WebService-Klasse abgeleitet ist. Die WebService-Klasse enthält viele der allgemeinen ASP.NET-Objekte, einschließlich des Session-Objekts und des Application-Objekts.

So greifen Sie auf einen für eine bestimmte Clientsitzung spezifischen Zustand zu und speichern ihn

  1. Deklarieren Sie einen Webdienst.

    <%@ WebService Language="C#" Class="ServerUsage" %>
    
    <%@ WebService Language="VB" Class="ServerUsage" %>
    
  2. Fügen Sie einen Verweis auf den System.Web.Services-Namespace hinzu.

    using System.Web.Services;
    
    Imports System.Web.Services
    
  3. Leiten Sie die Klasse, die den Webdienst implementiert, von der WebService-Klasse ab.

    public class ServerUsage : WebService 
    
    Public Class ServerUsage : Inherits WebService
    
  4. Deklarieren Sie eine Webdienstmethode, und legen Sie die EnableSession-Eigenschaft des WebMethod -Attributs auf true fest.

    [ WebMethod(EnableSession=true) ]
    public int PerSessionServiceUsage()
    
    < WebMethod(EnableSession:=True) > _
    Public Function PerSessionServiceUsage() As Integer
    
  5. Speichern Sie den Zustand in Session. Damit wird der Name des Zustands für einen späteren Abruf angegeben. Im folgenden Beispiel wird der Wert 1 in einer Zustandsvariablen mit dem Namen MyServiceUsage gespeichert.

    Session["MyServiceUsage"] = 1;
    
    Session("MyServiceUsage") = 1
    
  6. Greifen Sie auf die in Session gespeicherte Zustandsvariable zu.

    Im folgenden Beispiel wird auf die MyServiceUsage-Zustandsvariable zugegriffen, um ihren Wert zu erhöhen.

    Session["MyServiceUsage"] = ((int) Session["MyServiceUsage"]) + 1;
    
    Session("MyServiceUsage") = CInt(Session("MyServiceUsage")) + 1
    

So greifen Sie auf einen Zustand zu und speichern den Zustand, der für die Webanwendung spezifisch ist, die den Webdienst hostet

  1. Deklarieren Sie einen Webdienst.

    <%@ WebService Language="C#" Class="ServerUsage" %>
    
    <%@ WebService Language="VB" Class="ServerUsage" %>
    
  2. Fügen Sie einen Verweis auf den System.Web.Services-Namespace hinzu.

    using System.Web.Services;
    
    Imports System.Web.Services
    
  3. Leiten Sie die Klasse, die den Webdienst implementiert, von der WebService-Klasse ab.

    public class ServerUsage : WebService
    
    Public Class ServerUsage : Inherits WebService
    
  4. Deklarieren Sie eine Webdienstmethode.

    [ WebMethod ]
    public int PerSessionServiceUsage()
    
    < WebMethod > _
    Public Function PerSessionServiceUsage() As Integer
    
  5. Speichern Sie den Zustand in Application. Damit wird der Name des Zustands für einen späteren Abruf angegeben. Im folgenden Beispiel wird der Wert 1 in einer Zustandsvariablen mit dem Namen appMyServiceUsage gespeichert.

    Application["appMyServiceUsage"] = 1;
    
    Application("appMyServiceUsage") = 1
    
  6. Greifen Sie auf die in Application gespeicherte Zustandsvariable zu.

    Im folgenden Beispiel wird auf die appMyServiceUsage-Zustandsvariable zugegriffen, um ihren Wert zu erhöhen.

    Application["appMyServiceUsage"] =
       ((int) Application["appMyServiceUsage"]) + 1;
    
    Application("appMyServiceUsage") = _
       CInt(Application("appMyServiceUsage")) + 1
    

Beispiel

<%@ WebService Language="C#" Class="ServerUsage" %>
using System.Web.Services;

public class ServerUsage : WebService {
   [ WebMethod(Description="Number of times this service has been accessed.") ]
   public int ServiceUsage() {
     // If the Web service method hasn't been accessed,
     // initialize it to 1.
     if (Application["appMyServiceUsage"] == null) 
     {
       Application["appMyServiceUsage"] = 1;
     }
     else
     {
     // Increment the usage count.
       Application["appMyServiceUsage"] = ((int) Application["appMyServiceUsage"]) + 1;
     }
     return  (int) Application["appMyServiceUsage"];
   }

   [ WebMethod(Description="Number of times a particular client session has accessed this Web service method.",EnableSession=true) ]
   public int PerSessionServiceUsage() {
     // If the Web service method hasn't been accessed, initialize
     // it to 1.
     if (Session["MyServiceUsage"] == null) 
     {
       Session["MyServiceUsage"] = 1;
     }
     else
     {
     // Increment the usage count.
       Session["MyServiceUsage"] = ((int) Session["MyServiceUsage"]) + 1;
     }
     return  (int) Session["MyServiceUsage"];
   }
}
<%@ WebService Language="VB" Class="ServerUsage" %>
Imports System.Web.Services

Public Class ServerUsage
    Inherits WebService
    
<WebMethod(Description := "Number of times this service has been accessed.")> _
    Public Function ServiceUsage() As Integer
        ' If the Web service method hasn't been accessed, initialize
        ' it to 1.
        If Application("appMyServiceUsage") Is Nothing Then
            Application("appMyServiceUsage") = 1
        Else
            ' Increment the usage count.
            Application("appMyServiceUsage") = _
               CInt(Application("appMyServiceUsage")) + 1
        End If
        Return CInt(Application("appMyServiceUsage"))
    End Function    
    
<WebMethod(Description := "Number of times a particular client session has accessed this Web service method.", EnableSession := True)> _
    Public Function  PerSessionServiceUsage() As Integer
       ' If the Web service method hasn't been accessed,
       ' initialize it to 1.
        If Session("MyServiceUsage") Is Nothing Then
            Session("MyServiceUsage") = 1
        Else
            ' Increment the usage count.
           Session("MyServiceUsage") = CInt(Session("MyServiceUsage")) + 1
        End If
        Return CInt(Session("MyServiceUsage"))
    End Function
    
End Class

Siehe auch

Weitere Ressourcen

ASP.NET State Management