Voici la traduction d'un article de John Gallardo sur le paramètre ClearSession dans Reporting Services.
Lorsque l'on souhaite exporter un rapport au travers d'un lien, ce dernier ressemble souvent à ceci :
<a href="http://localhost/reportserver/SalesData& rs:Command=Render&rs:Format=EXCEL">Export au format Excel</a>
A première vue, tout semble correct. Cependant, si vous travaillez dans un environnement ou les données sont extrêmement volatiles et ou l'utilisateur a besoin de cliquer plusieurs fois sur le lien pour avoir les dernières données disponibles, alors là, vous pourrez rencontrer des difficultés. Pour comprendre pourquoi vous risquez de rencontrer des difficultés, vous devez d'abord comprendre que lorsque vous accédez à un rapport au travers du Report Server, vous établissez une Session avec le serveur. Une Session permet de lier l'utilisateur, le rapport et les données du rapport. Les sessions sont utilisées pour s'assurer de la consistance des données lorsque l'on navigue ou interagit sur les pages des rapports.
Ok, alors qu'est-ce que cela a à voir avec l'URL ci-dessus? Eh bien, lorsqu'un utilisateur clique sur cette URL, une session utilisateur est créée, un cookie est déposé sur le navigateur de l'utilisateur afin de permettre son authentification lors d'une session ultérieure et ainsi de retrouver la bonne instance du rapport et des données. Si l'utilisateur, au sein d'une même session IE, clique de nouveau sur le rapport (en supposant que la session n'a pas expirée, 10 minutes par défaut), le rapport et les chiffres qui vont lui être présenté sont ceux mis en cache (lié a sa session), et donc catastrophe, l'utilisateur ne voit pas les dernières informations disponibles, mais des informations vieilles de 5 minutes !!!!
Alors, que devons-nous faire? Eh bien, il existe un paramètre (rs: *) qui indique au serveur "Hey, je sais que vous avez déjà créé une session pour cet utilisateur, mais oubliez la, et créez-en une nouvelle », ce paramètre est rs:ClearSession=true. En rajoutant rs:ClearSession=true, vous vous assurez que le serveur construit une nouvelle session utilisateur et exécute le rapport avec les dernières données disponibles.