2010-02-10 4 views
2

j'ai un élément que je stocke dans le HttpContext:HttpContext articles Non disponible à la méthode Web par AJAX

HttpContext.Current.Items["myItem"] = "123"; 

Je ne peux accéder à ce pas un problème de l'une des méthodes d'une page. Par exemple:

protected override void OnLoad(EventArgs e) 
{ 
    string l_myItemVal = HttpContext.Current.Items["myItem"] as string; // "123" 
} 

Cela fonctionne très bien.

Cependant, lorsque vous appelez un des méthodes web page via AJAX, cela ne fonctionne pas:

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public static string MyWebMethod() 
{ 
    string l_myItemVal = HttpContext.Current.Items["myItem"] as string; // NULL 
} 

Est-HttpContext d'un appel asynchrone différent du HttpContext pour la page?

Répondre

3

HttpContext.Items ne détient que des éléments au cours d'une seule demande. Votre requête AJAX est une deuxième requête et possède sa propre propriété Items.

-1

Peut-être que vous devez activer l'état de session pour faire ce travail:

[System.Web.Services.WebMethod(true)] 
+1

@Ray: -1. Cela n'a rien à voir avec 'HttpContext.Items' –

+0

cela est vrai - je l'ai suggéré comme expérience pour voir si cela permettrait l'accès à HttpContent - ce ne serait pas la première fois que nous avons vu des conséquences inattendues/inattendues. J'ai lu son problème d'accéder au HttpContext lui-même. Votre réponse (éléments pertinents à une seule demande) est probablement correcte. – Ray

Questions connexes