¿Por qué WebMethod puede acceder al estado de sesión sin EnableSessionState?

Tengo un método en una página marcada como[WebMethod] que utiliza algún estado de sesión como parte de su operación. Después de escribir este código, de repente tuve un flash de memoria que necesitas usarEnableSessionState cuando se utiliza el estado de sesión en una[WebMethod] (por ejemplo, ver aquí:http://msdn.microsoft.com/en-us/library/byxd99hx.aspx). Pero parece estar funcionando bien. ¿Por qué?

Código de muestra detrás:

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"];
}

Muestra cuerpo 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>

Respuestas a la pregunta(2)

Su respuesta a la pregunta