2010-02-25 1 views

Répondre

5

Vous aurez probablement besoin de mettre en place un HTTP handler ou quelque chose de similaire qui acceptera les demandes et les choses de magasin dans la session. Visual Studio l'a quelque part dans les menus "Ajouter" dans la vue de la solution. (Si vous utilisez ASP.NET MVC, vous devez simplement définir une autre action au lieu d'un gestionnaire générique.)

Étant donné que ces valeurs peuvent avoir différents types (int, chaîne, etc.) et étant donné que vous ne Ne voulez pas que les utilisateurs malveillants fouillent dans une clé de session qu'ils jugent appropriée, vous voudrez probablement configurer une branche pour déterminer ce qu'il faut faire avec chaque clé. Quelque chose comme ça (dans le gestionnaire que vous avez créé):

string key = context.Request.QueryString["key"].ToString(); 
string val = context.Request.QueryString["val"].ToString(); 
if(key == "AshDiffuserID"){ 
    int ash_diffuser_id = Convert.ToInt32(val); 
    Session["AshDiffuserID"] = ash_diffuser_id; 
} 
else if(key == "PesterchumHandle") { 
    string handle = val; 
    Session["PesterchumHandle"] = handle; 
} else // etc... 

Après cela, vous aurez besoin de mettre en place un post HTTP request par jquery qui met tout ce que les valeurs que vous avez besoin dans les « clés » et champs « val ».

$.post(
    'url/to/your/handler.ashx', 
    {key: "PesterchumHandle", val: "carcinoGenetecist"} 
); 
0

Vous devrez effectuer une publication ajax sur le serveur via jquery.

1

J'ai perdu toute la journée pour régler ce problème alors que ce n'est qu'une solution rapide. Pendant l'appel de PageMethod, l'ID de session n'est pas passé avec l'URL de demande, donc un nouvel événement session_start est déclenché. Nous avons juste besoin de définir un chemin de requête exact avant d'appeler un pagemethod, de sorte qu'un nouvel événement de démarrage de session ne puisse pas être déclenché.

if ('<%= HttpContext.Current.Session.IsCookieless %>==True') { 
//need to pass session id in request path 
PageMethods.set_path('<%= System.Web.Configuration.WebConfigurationManager.AppSettings("WebRoot") %>(S(<%=Session.SessionID%>))/secure/PageName.aspx'); 
} 
PageMethods.PageMethodName(param1,param2, CallSuccess, CallFailed); 
Questions connexes