Bonjour,
J'utilise un Webservice avec une application WPF et Silverlight. Je souhaite utiliser l'objet Session dans mon WebService pour utiliser une notion de persistance. L'initialisation de ma Session fonctionne bien (Webmethod SetupGetData), mais lorsque je fais appel à nouveau à l'objet par une autre méthode (Webmethod GetData), l'objet Session est null

Dans le fichier de config du service web j'ai mis la ligne suivante pour activer les cookies mais le comportement est le même sans cette ligne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<sessionState cookieless="UseCookies" mode="InProc"></sessionState>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[WebMethod(EnableSession=true)]
        [XmlInclude(typeof(CSetupData)), XmlInclude(typeof(CReturnSetupData))]
        public List<CReturnSetupData> SetupGetData(List<CSetupData> setupDataList)
        {
 
            List<CReturnSetupData> returnSetupDataList = new List<CReturnSetupData>();
 
            // Création des sessions
            foreach(CSetupData setupData in setupDataList)
            {
                if (Session[setupData.Id.ToString()] == null)
                {
 
                    Session[setupData.Id.ToString()] = setupData;
 
                    CReturnSetupData returnSetupData = new CReturnSetupData(setupData.Id);
                    returnSetupDataList.Add(returnSetupData);
                }
            }
 
            return returnSetupDataList;
        }
 
 
                [WebMethod(EnableSession = true)]
        [XmlInclude(typeof(CData)), XmlInclude(typeof(CReturnData))]
        public List<CReturnData> GetData(List<CData> dataList)
        {                        
            List<CReturnData> returnDataList = new List<CReturnData>();
            Random rand = new Random();
 
            foreach (CData data in dataList)
            {
 
                if (Session[data.Id.ToString()] != null)
                {
 
                    for (DateTime date = data.T0; date <= DateTime.Now; date = date.AddMilliseconds(data.DeltaTResol / 5))
                    {
                        CReturnData returnData = new CReturnData(data.Id, date, rand.Next(0, 80));
                        returnDataList.Add(returnData);
                    }
                }
                else
                {
 
                }
            }
 
            return returnDataList;
        }