Procedura: gestire lo stato nei servizi Web XML esistenti creati tramite ASP.NET
Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.
Quando la classe che implementa il servizio Web deriva dalla classe WebService, i servizi Web hanno accesso alle stesse opzioni di gestione dello stato delle altre applicazioni ASP.NET. La classe WebService contiene molti degli oggetti ASP.NET comuni, inclusi gli oggetti Session e Application.
Accedere e archiviare lo stato di una particolare sessione client
Dichiarare un servizio Web.
<%@ WebService Language="C#" Class="ServerUsage" %>
<%@ WebService Language="VB" Class="ServerUsage" %>
Aggiungere un riferimento allo spazio dei nomi System.Web.Services.
using System.Web.Services;
Imports System.Web.Services
Derivare la classe che implementa il servizio Web da WebService.
public class ServerUsage : WebService
Public Class ServerUsage : Inherits WebService
Dichiarare un metodo del servizio Web, impostando la proprietà EnableSession dell'attributo WebMethod su true.
[ WebMethod(EnableSession=true) ] public int PerSessionServiceUsage()
< WebMethod(EnableSession:=True) > _ Public Function PerSessionServiceUsage() As Integer
Archiviare le informazioni di stato in Session, che specifica un nome di stato per il recupero in un momento successivo. Nell'esempio seguente il valore
1
viene archiviato in una variabile di stato denominataMyServiceUsage
.Session["MyServiceUsage"] = 1;
Session("MyServiceUsage") = 1
Accedere alla variabile di stato archiviata in Session.
Nell'esempio seguente, viene eseguito l'accesso alla variabile di stato
MyServiceUsage
per incrementarne il valore.Session["MyServiceUsage"] = ((int) Session["MyServiceUsage"]) + 1;
Session("MyServiceUsage") = CInt(Session("MyServiceUsage")) + 1
Accedere e archiviare lo stato specifico dell'applicazione Web in cui risiede il servizio Web
Dichiarare un servizio Web.
<%@ WebService Language="C#" Class="ServerUsage" %>
<%@ WebService Language="VB" Class="ServerUsage" %>
Aggiungere un riferimento allo spazio dei nomi System.Web.Services.
using System.Web.Services;
Imports System.Web.Services
Derivare la classe che implementa il servizio Web da WebService.
public class ServerUsage : WebService
Public Class ServerUsage : Inherits WebService
Dichiarare un metodo del servizio Web.
[ WebMethod ] public int PerSessionServiceUsage()
< WebMethod > _ Public Function PerSessionServiceUsage() As Integer
Archiviare le informazioni di stato in Application, che specifica un nome di stato per il recupero in un momento successivo. Nell'esempio seguente il valore
1
viene archiviato in una variabile di stato denominataappMyServiceUsage
.Application["appMyServiceUsage"] = 1;
Application("appMyServiceUsage") = 1
Eseguire l 'accesso alla variabile di stato archiviata in Application.
Nell'esempio seguente, viene eseguito l'accesso alla variabile di stato
appMyServiceUsage
per incrementarne il valore.Application["appMyServiceUsage"] = ((int) Application["appMyServiceUsage"]) + 1;
Application("appMyServiceUsage") = _ CInt(Application("appMyServiceUsage")) + 1
Esempio
<%@ 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