WebMethodAttribute.EnableSession プロパティ
アセンブリ: System.Web.Services (system.web.services.dll 内)

Dim instance As WebMethodAttribute Dim value As Boolean value = instance.EnableSession instance.EnableSession = value
/** @property */ public boolean get_EnableSession () /** @property */ public void set_EnableSession (boolean value)
XML Web サービス メソッドに対してセッション状態が有効である場合は true。既定値は false です。

ASP.NET HttpSessionState オブジェクト内にセッション状態を格納するには、EnableSession プロパティを true に設定して、XML Web サービスを WebService から継承し、WebMethodAttribute を、XML Web サービス メソッドに適用する必要があります。XML Web サービス メソッドに対してセッション状態が不要な場合は、セッション状態を無効にすると、パフォーマンスを向上できます。
XML Web サービスのクライアントは、XML Web サービスから返される HTTP Cookie によって一意に識別されます。XML Web サービスがクライアントのセッション状態を維持するためには、クライアントが cookie を永続化している必要があります。クライアントは、XML Web サービス メソッドを呼び出す前に、CookieContainer の新しいインスタンスを作成し、これをプロキシ クラスの CookieContainer プロパティに割り当てることによって、HTTP Cookie を受け取ることができます。プロキシ クラスのインスタンスがスコープの外に移った後でもセッション状態を維持する必要がある場合、クライアントは XML Web サービスの呼び出しの間で HTTP Cookie を永続化している必要があります。たとえば、Web フォーム クライアントは、CookieContainer をそのセッション状態に保存することによって、HTTP Cookie を永続化できます。すべての XML Web サービスがセッション状態を使用するわけではないため、クライアントはクライアント プロキシの CookieContainer プロパティを常に使用する必要はありません。このため、XML Web サービスのドキュメントには、セッション状態が使用されるかどうかが記載されています。

セッション状態を使用して、特定のセッションが XML Web サービス メソッド SessionHitCounter にアクセスした回数を判断する例を次に示します。
<%@ 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
<%@ 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"]); } }
セッション状態を使用する XML Web サービスの Web フォーム クライアントの例を次に示します。クライアントは、セッションを一意に識別する HTTP Cookie をクライアントのセッション状態に格納することによって永続化します。
<%@ 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>
<%@ 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>

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からWebMethodAttribute.EnableSession プロパティを検索する場合は、下記のリンクをクリックしてください。

- WebMethodAttribute.EnableSession プロパティのページへのリンク