Aracılığıyla paylaş


WebMethodAttribute.EnableSession Özellik

Tanım

XML Web hizmeti yöntemi için oturum durumunun etkinleştirilip etkinleştirilmediğini gösterir.

public:
 property bool EnableSession { bool get(); void set(bool value); };
public bool EnableSession { get; set; }
member this.EnableSession : bool with get, set
Public Property EnableSession As Boolean

Özellik Değeri

Boolean

true oturum durumu bir XML Web hizmeti yöntemi için etkinleştirildiyse. Varsayılan değer: false.

Örnekler

Aşağıdaki örnek, belirli bir oturumun XML Web hizmeti yöntemine SessionHitCounterkaç kez erişeceğini belirlemek için oturum durumunu kullanır.

<%@ WebService Language="C#" Class="Util" %>
 
 using System.Web.Services;
 
 public class Util: WebService {
   [ WebMethod(Description="Per session Hit Counter",EnableSession=true)]
    public int SessionHitCounter() {
       if (Session["HitCounter"] == null) {
          Session["HitCounter"] = 1;
       }
       else {
          Session["HitCounter"] = ((int) Session["HitCounter"]) + 1;
          }
       return ((int) Session["HitCounter"]);
    }   
 }
<%@ WebService Language="VB" Class="Util" %>
 
Imports System.Web.Services

Public Class Util
    Inherits WebService
    
    <WebMethod(Description := "Per session Hit Counter", _
        EnableSession := True)> _
    Public Function SessionHitCounter() As Integer
        
        If Session("HitCounter") Is Nothing Then
            Session("HitCounter") = 1
        Else
            Session("HitCounter") = CInt(Session("HitCounter")) + 1
        End If
        Return CInt(Session("HitCounter"))
    End Function
End Class

Aşağıdaki kod örneği, oturum durumunu kullanan bir XML Web hizmetinin Web Forms istemcisidir. İstemci, oturumu istemcinin oturum durumunda depolayarak oturumu benzersiz olarak tanımlayan HTTP tanımlama bilgisini kalıcı hale getirilir.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Net" %>

<html>

    <script runat="server">

        void EnterBtn_Click(Object Src, EventArgs E) 
    {
      // Create a new instance of a proxy class for your XML Web service.
      ServerUsage su = new ServerUsage();
          CookieContainer cookieJar;

      // Check to see if the cookies have already been saved for this session.
      if (Session["CookieJar"] == null) 
        cookieJar= new CookieContainer();
          else
       cookieJar = (CookieContainer) Session["CookieJar"];

        // Assign the CookieContainer to the proxy class.
        su.CookieContainer = cookieJar;

      // Invoke an XML Web service method that uses session state and thus cookies.
      int count = su.PerSessionServiceUsage();         

      // Store the cookies received in the session state for future retrieval by this session.
      Session["CookieJar"] = cookieJar;

          // Populate the text box with the results from the call to the XML Web service method.
          SessionCount.Text = count.ToString();  
        }
         
    </script>
    <body>
       <form runat=server ID="Form1">
           
             Click to bump up the Session Counter.
             <p>
             <asp:button text="Bump Up Counter" Onclick="EnterBtn_Click" runat=server ID="Button1" NAME="Button1"/>
             <p>
             <asp:label id="SessionCount"  runat=server/>
          
       </form>
    </body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Net" %>

<html>

    <script runat=server>

        Public Sub EnterBtn_Click(src As Object, E As EventArgs) 

      ' Create a new instance of a proxy class for your XML Web service.
      Dim su As ServerUsage = new ServerUsage()
          Dim cookieJar As CookieContainer

      ' Check to see if the cookies have already been saved for this session.
      If (Session("CookieJar") Is Nothing) 
        cookieJar= new CookieContainer()
          Else
       cookieJar = Session("CookieJar")
      End If
   

        ' Assign the CookieContainer to the proxy class.
        su.CookieContainer = cookieJar

      ' Invoke an XML Web service method that uses session state and thus cookies.
      Dim count As Integer = su.PerSessionServiceUsage()         

      ' Store the cookies received in the session state for future retrieval by this session.
      Session("CookieJar") = cookieJar

          ' Populate the text box with the results from the call to the XML Web service method.
          SessionCount.Text = count.ToString()  
    End Sub
         
    </script>
    <body>
       <form runat=server ID="Form1">
           
             Click to bump up the Session Counter.
             <p>
             <asp:button text="Bump Up Counter" Onclick="EnterBtn_Click" runat=server ID="Button1" NAME="Button1"/>
             <p>
             <asp:label id="SessionCount"  runat=server/>
          
       </form>
    </body>
</html>

Açıklamalar

Oturum durumunu ASP.NET HttpSessionState nesnesinde depolamak için, XML Web hizmetinin öğesinden WebService devralması ve WebMethodAttribute XML Web hizmeti yöntemine uygulanması ve özelliğini trueolarak ayarlaması EnableSession gerekir. XML Web hizmeti yöntemi için oturum durumu gerekmiyorsa, devre dışı bırakmak performansı artırabilir.

XML Web hizmeti istemcisi, XML Web hizmeti tarafından döndürülen HTTP tanımlama bilgisi tarafından benzersiz olarak tanımlanır. XML Web hizmetinin bir istemcinin oturum durumunu koruması için, istemci tanımlama bilgisini kalıcı hale getirmek zorundadır. İstemciler, XML Web hizmeti yöntemini çağırmadan önce bunun yeni bir örneğini CookieContainer oluşturup bunu proxy sınıfının özelliğine CookieContainer atayarak HTTP tanımlama bilgisini alabilir. Ara sunucu sınıf örneği kapsam dışına çıktığında oturum durumunu korumanız gerekiyorsa, istemcinin XML Web hizmetine yapılan çağrılar arasında HTTP tanımlama bilgisini kalıcı hale getirmek gerekir. Örneğin, bir Web Forms istemcisi http tanımlama bilgisini kendi oturum durumuna kaydederek CookieContainer kalıcı hale gelebilir. Tüm XML Web hizmetleri oturum durumunu kullanmadığından ve bu nedenle istemcilerin her zaman bir istemci ara sunucusunun özelliğini kullanması CookieContainer gerekmediğinden, XML Web hizmeti belgeleri oturum durumunun kullanılıp kullanılmadığını belirtmelidir.

Şunlara uygulanır

Ayrıca bkz.