Pourquoi WebMethod Accéder À L'État De Session Sans EnableSessionState?

J'ai une méthode sur une page marquée comme une [WebMethod] qui utilise l'état de session dans le cadre de son opération. Après, j'ai écrit ce code, j'ai soudain eu un flash de mémoire dont vous avez besoin pour utiliser EnableSessionState lorsque vous utilisez l'état de session dans un [WebMethod] (par exemple, voir ici: http://msdn.microsoft.com/en-us/library/byxd99hx.aspx). Mais il semble bien fonctionner. Pourquoi?

Exemple de code derrière:

protected void Page_Load(object sender, EventArgs args) {
    this.Session["variable"] = "hey there";
}
[System.Web.Services.WebMethod]
public static string GetSessionVariable() {
    return (string)HttpContext.Current.Session["variable"];
}

Échantillon corps html:

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
    function getSession() {
        $.ajax({
            type: 'POST',
            url: 'Default.aspx/GetSessionVariable',
            data: '{ }',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (msg) {
                document.getElementById("showSessionVariable").innerHTML = msg.d;
            }
        });
        return false;
    }
</script>
<form id="form1" runat="server">
    <div id="showSessionVariable"></div>
    <button onclick='return getSession()'>Get Session Variable</button>
</form>

OriginalL'auteur user12861 | 2013-03-22