Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
XML-Webdienste erhalten Zugriff auf dieselben Statusverwaltungsoptionen wie andere ASP.NET-Anwendungen, wenn die Klasse zur Implementierung des XML-Webdienstes von der WebService-Klasse abgeleitet wurde. Die WebService-Klasse enthält viele der allgemeinen ASP.NET-Objekte, darunter die Objekte Session und Application.
Das Application-Objekt bietet einen Mechanismus für das Speichern von Daten, auf die sämtlicher, in der Webanwendung ausgeführter Code zugreifen kann. Demgegenüber ermöglicht das Session-Objekt das Speichern von Daten pro Clientsitzung. Wenn der Client Cookies unterstützt, kann die Clientsitzung durch ein Cookie identifiziert werden. Die im Session-Objekt gespeicherten Daten sind nur verfügbar, wenn die EnableSession-Eigenschaft des WebMethod-Attributs für eine von WebService abgeleitete Klasse auf true gesetzt ist. Eine von WebService abgeleitete Klasse hat automatisch Zugriff auf das Application-Objekt.
So greifen Sie auf den für eine bestimmte Clientsitzung spezifischen Status zu und speichern diesen
Deklarieren Sie einen XML-Webdienst.
<%@ WebService Language="C#" Class="ServerUsage" %> [Visual Basic] <%@ WebService Language="VB" Class="ServerUsage" %>Fügen Sie einen Verweis auf den System.Web.Services-Namespace hinzu.
using System.Web.Services; [Visual Basic] Imports System.Web.ServicesLeiten Sie die Klasse, durch die der XML-Webdienst implementiert wird, von WebService ab.
public class ServerUsage : WebService [Visual Basic] Public Class ServerUsage : Inherits WebServiceDeklarieren Sie eine XML-Webdienstmethode, und legen Sie dabei die EnableSession-Eigenschaft des WebMethod-Attributs auf true fest.
[ WebMethod(EnableSession=true) ] public int PerSessionServiceUsage() [Visual Basic] < WebMethod(EnableSession:=True) > _ Public Function PerSessionServiceUsage() As IntegerSpeichern Sie den Status in Session, und legen Sie dabei zum späteren Abruf einen Namen für den Status fest. Im folgenden Beispiel wird der Wert
1in einer Statusvariablen namensMyServiceUsagegespeichert.Session["MyServiceUsage"] = 1; [Visual Basic] Session("MyServiceUsage") = 1Greifen Sie auf die in Session gespeicherte Statusvariable zu.
Im folgenden Beispiel wird durch den Zugriff der Wert der
MyServiceUsage-Statusvariablen erhöht.Session["MyServiceUsage"] = ((int) Session["MyServiceUsage"]) + 1; [Visual Basic] Session("MyServiceUsage") = CInt(Session("MyServiceUsage")) + 1
So greifen Sie auf den für die Webanwendung, die den XML-Webdienst enthält, spezifischen Status zu und speichern diesen
Deklarieren Sie einen XML-Webdienst.
<%@ WebService Language="C#" Class="ServerUsage" %> [Visual Basic] <%@ WebService Language="VB" Class="ServerUsage" %>Fügen Sie einen Verweis auf den System.Web.Services-Namespace hinzu.
using System.Web.Services; [Visual Basic] Imports System.Web.ServicesLeiten Sie die Klasse, durch die der XML-Webdienst implementiert wird, von WebService ab.
public class ServerUsage : WebService [Visual Basic] Public Class ServerUsage : Inherits WebServiceDeklarieren Sie eine XML-Webdienstmethode.
[ WebMethod ] public int PerSessionServiceUsage() [Visual Basic] < WebMethod > _ Public Function PerSessionServiceUsage() As IntegerSpeichern Sie den Status in Application, und legen Sie dabei zum späteren Abruf einen Namen für den Status fest. Im folgenden Beispiel wird der Wert
1in einer Statusvariablen namensappMyServiceUsagegespeichert.Application["appMyServiceUsage"] = 1; [Visual Basic] Application("appMyServiceUsage") = 1Greifen Sie auf die in Application gespeicherte Statusvariable zu.
Im folgenden Beispiel wird durch den Zugriff der Wert der
appMyServiceUsage-Statusvariablen erhöht.Application["appMyServiceUsage"] = ((int) Application["appMyServiceUsage"]) + 1; [Visual Basic] Application("appMyServiceUsage") = _ CInt(Application("appMyServiceUsage")) + 1
Das folgende Codebeispiel ist ein XML-Webdienst mit zwei XML-Webdienstmethoden: ServerUsage und PerSessionServerUsage. ServerUsage ist ein Zugriffszähler, der bei jedem Zugriff auf die XML-Webdienstmethode ServerUsage erhöht wird, und zwar unabhängig von dem Client, der mit der XML-Webdienstmethode kommuniziert. Wenn beispielsweise drei Clients die XML-Webdienstmethode ServerUsage nacheinander aufrufen, erhält die letzte den Rückgabewert 3. PerSessionServiceUsage dient demgegenüber als Zugriffszähler für eine bestimmte Clientsitzung. Wenn drei Clients nacheinander auf PerSessionServiceUsage zugreifen, erhält jeder Client beim ersten Aufruf mit 1 dasselbe Ergebnis.
<%@ 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 XML 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 particualr client session has accessed this XML Web service method.",EnableSession=true) ]
public int PerSessionServiceUsage() {
// If the XML 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"];
}
}
[Visual Basic]
<%@ 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 XML 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 XML Web service method.", EnableSession := True)> _
Public Function PerSessionServiceUsage() As Integer
' If the XML 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
ASP.NET-Zustandsverwaltung | Erstellen von XML-Webdiensten mit ASP.NET