다음을 통해 공유


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

웹 서비스를 구현하는 클래스가 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

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.