다음을 통해 공유


방법: ASP.NET을 사용하여 만든 웹 서비스에서 상태 관리

이 항목은 레거시 기술과 관련된 것입니다. 이제 XML Web services와 XML Web services 클라이언트는 다음을 사용하여 만들어야 합니다. Windows Communication Foundation.

웹 서비스를 구현하는 클래스가 WebService 클래스에서 파생된 경우 웹 서비스는 다른 ASP.NET 응용 프로그램과 동일한 상태 관리 옵션에 액세스할 수 있습니다. WebService 클래스에는 SessionApplication 개체를 포함하여 많은 수의 공통 ASP.NET 개체가 포함되어 있습니다.

특정 클라이언트 세션에 대한 상태를 액세스하고 저장하려면

  1. 웹 서비스를 선언합니다.

    <%@ WebService Language="C#" Class="ServerUsage" %>
    
    <%@ WebService Language="VB" Class="ServerUsage" %>
    
  2. System.Web.Services 네임스페이스에 대한 참조를 추가합니다.

    using System.Web.Services;
    
    Imports System.Web.Services
    
  3. 웹 서비스를 구현하는 클래스를 WebService에서 파생시킵니다.

    public class ServerUsage : WebService 
    
    Public Class ServerUsage : Inherits WebService
    
  4. WebMethod 특성의 EnableSession 속성을 true로 설정하여 웹 서비스 메서드를 선언합니다.

    [ WebMethod(EnableSession=true) ]
    public int PerSessionServiceUsage()
    
    < WebMethod(EnableSession:=True) > _
    Public Function PerSessionServiceUsage() As Integer
    
  5. 나중에 검색할 수 있도록 상태 이름을 지정하는 Session에 상태를 저장합니다. 다음 예제에서는 값 1MyServiceUsage라는 상태 변수에 저장됩니다.

    Session["MyServiceUsage"] = 1;
    
    Session("MyServiceUsage") = 1
    
  6. Session에 저장된 상태 변수에 액세스합니다.

    다음 예제에서는 MyServiceUsage 상태 변수에 액세스하여 해당 값을 증가시킵니다.

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

웹 서비스를 호스팅하는 특정 웹 응용 프로그램에 대한 상태를 액세스하고 저장하려면

  1. 웹 서비스를 선언합니다.

    <%@ WebService Language="C#" Class="ServerUsage" %>
    
    <%@ WebService Language="VB" Class="ServerUsage" %>
    
  2. System.Web.Services 네임스페이스에 대한 참조를 추가합니다.

    using System.Web.Services;
    
    Imports System.Web.Services
    
  3. 웹 서비스를 구현하는 클래스를 WebService에서 파생시킵니다.

    public class ServerUsage : WebService
    
    Public Class ServerUsage : Inherits WebService
    
  4. 웹 서비스 메서드를 선언합니다.

    [ WebMethod ]
    public int PerSessionServiceUsage()
    
    < WebMethod > _
    Public Function PerSessionServiceUsage() As Integer
    
  5. 나중에 검색할 수 있도록 상태 이름을 지정하는 Application에 상태를 저장합니다. 다음 예제에서는 값 1appMyServiceUsage라는 상태 변수에 저장됩니다.

    Application["appMyServiceUsage"] = 1;
    
    Application("appMyServiceUsage") = 1
    
  6. Application에 저장된 상태 변수에 액세스합니다.

    다음 예제에서는 appMyServiceUsage 상태 변수에 액세스하여 해당 값을 증가시킵니다.

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

예제

<%@ 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

참고 항목

기타 리소스

ASP.NET State Management