Cómo: Administrar el estado en servicios web creados con ASP.NET
Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.
Los servicios Web tienen acceso a las mismas opciones de administración de estados que otras aplicaciones ASP.NET cuando la clase que implementa el servicio Web se deriva de la clase WebService. La clase WebService contiene muchos de objetos ASP.NET comunes, incluidos los objetos Session y Application.
Para tener acceso y almacenar el estado específico de una sesión del cliente determinada
Declare un servicio Web.
<%@ WebService Language="C#" Class="ServerUsage" %>
<%@ WebService Language="VB" Class="ServerUsage" %>
Agregue una referencia al espacio de nombres System.Web.Services.
using System.Web.Services;
Imports System.Web.Services
Derive la clase que implementa el servicio Web de WebService.
public class ServerUsage : WebService
Public Class ServerUsage : Inherits WebService
Declare un método de servicio Web, estableciendo la propiedad EnableSession del atributo WebMethod en true.
[ WebMethod(EnableSession=true) ] public int PerSessionServiceUsage()
< WebMethod(EnableSession:=True) > _ Public Function PerSessionServiceUsage() As Integer
Almacene el estado en Session, que especifica un nombre de estado para la recuperación posterior. En el ejemplo siguiente el valor
1
se almacena en una variable de estado denominadaMyServiceUsage
.Session["MyServiceUsage"] = 1;
Session("MyServiceUsage") = 1
Tenga acceso a la variable de estado almacenada en Session.
En el ejemplo siguiente se tiene acceso a la variable de estado
MyServiceUsage
para incrementar su valor.Session["MyServiceUsage"] = ((int) Session["MyServiceUsage"]) + 1;
Session("MyServiceUsage") = CInt(Session("MyServiceUsage")) + 1
Para tener acceso y almacenar el estado específico en la aplicación web que hospeda el servicio Web
Declare un servicio Web.
<%@ WebService Language="C#" Class="ServerUsage" %>
<%@ WebService Language="VB" Class="ServerUsage" %>
Agregue una referencia al espacio de nombres System.Web.Services.
using System.Web.Services;
Imports System.Web.Services
Derive la clase que implementa el servicio Web de WebService.
public class ServerUsage : WebService
Public Class ServerUsage : Inherits WebService
Declare un método de servicio Web.
[ WebMethod ] public int PerSessionServiceUsage()
< WebMethod > _ Public Function PerSessionServiceUsage() As Integer
Almacene el estado en Application, que especifica un nombre de estado para la recuperación posterior. En el ejemplo siguiente el valor
1
se almacena en una variable de estado denominadaappMyServiceUsage
.Application["appMyServiceUsage"] = 1;
Application("appMyServiceUsage") = 1
Tenga acceso a la variable de estado almacenada en Application.
En el ejemplo siguiente se tiene acceso a la variable de estado
appMyServiceUsage
para incrementar su valor.Application["appMyServiceUsage"] = ((int) Application["appMyServiceUsage"]) + 1;
Application("appMyServiceUsage") = _ CInt(Application("appMyServiceUsage")) + 1
Ejemplo
<%@ 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