<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog - VISKALI &#187; ASP.net</title>
	<atom:link href="http://blog.viskali.fr/tag/asp-net-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.viskali.fr</link>
	<description>Les ressources du Web</description>
	<lastBuildDate>Thu, 13 Oct 2016 12:18:57 +0000</lastBuildDate>
	<language>fr-FR</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Résoudre l&#8217;erreur : L&#8217;état de session a créé un ID de session&#8230;</title>
		<link>http://blog.viskali.fr/resoudre-lerreur-letat-de-session-a-cree-un-id-de-session/</link>
		<comments>http://blog.viskali.fr/resoudre-lerreur-letat-de-session-a-cree-un-id-de-session/#comments</comments>
		<pubDate>Tue, 29 Jul 2014 10:00:02 +0000</pubDate>
		<dc:creator><![CDATA[Alexandre]]></dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[erreur]]></category>

		<guid isPermaLink="false">http://www.viskali.fr/Blog/?p=63</guid>
		<description><![CDATA[<p>Au cours de nos différents développements web, nous avons été confrontés à l&#8217;erreur suivante : L&#8217;état de session a créé un ID de session, mais il ne peut pas l&#8217;enregistrer, car la réponse a déjà été vidée par l&#8217;application. &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8230;
<p class="more-link"><a href="http://blog.viskali.fr/resoudre-lerreur-letat-de-session-a-cree-un-id-de-session/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>Cet article <a rel="nofollow" href="http://blog.viskali.fr/resoudre-lerreur-letat-de-session-a-cree-un-id-de-session/">Résoudre l&rsquo;erreur : L&rsquo;état de session a créé un ID de session&#8230;</a> est apparu en premier sur <a rel="nofollow" href="http://blog.viskali.fr">Blog - VISKALI</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Au cours de nos différents développements web, nous avons été confrontés à l&rsquo;erreur suivante :</strong></p>
<p style="text-align: justify;">L&rsquo;état de session a créé un ID de session, mais il ne peut pas l&rsquo;enregistrer, car la réponse a déjà été vidée par l&rsquo;application.</p>
<p><span id="more-63"></span></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>2014/03/28 15:16:00 UNKNOWN<br />
Message: [System.Web.HttpException]L&rsquo;état de session a créé un ID de session, mais il ne peut pas l&rsquo;enregistrer, car la réponse a déjà été vidée par l&rsquo;application.<br />
Trace: à System.Web.SessionState.SessionIDManager.SaveSessionID(HttpContext context, String id, Boolean&amp; redirected, Boolean&amp; cookieAdded)<br />
à System.Web.SessionState.SessionStateModule.CreateSessionId()<br />
à System.Web.SessionState.SessionStateModule.DelayedGetSessionId()<br />
à System.Web.SessionState.SessionStateModule.ReleaseStateGetSessionID()<br />
à System.Web.SessionState.SessionStateModule.OnReleaseState(Object source, EventArgs eventArgs)<br />
à System.Web.SessionState.SessionStateModule.OnEndRequest(Object source, EventArgs eventArgs)<br />
à System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()<br />
à System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)<br />
Target: Void SaveSessionID(System.Web.HttpContext, System.String, Boolean ByRef, Boolean ByRef)<br />
Source: System.Web<br />
Data:<br />
&#8212;&#8212;-<br />
=======</p>
<p style="text-align: justify;"><strong><span id="p12">Quand l&rsquo;erreur apparaît-elle ?</span></strong></p>
<p style="text-align: justify;"><span style="color: #000000;"><span id="p30">Dans notre cas, l&rsquo;erreur apparaît au premier chargement de l&rsquo;application et plus particulièrement lors de la création d&rsquo;une nouvelle session via la méthode &laquo;&nbsp;<span id="31">Session_Start</span>&nbsp;&raquo; du Global.</span><span id="p41"><span id="48">asax</span>.</span></span></p>
<p style="text-align: justify;"><span id="p42" style="color: #000000;">Cependant, l&rsquo;erreur peut apparaître dans d&rsquo;autres situations :</span></p>
<ul>
<li style="text-align: justify;"><span style="color: #000000;"><span id="p44">Dans le cas de l&rsquo;utilisation d&rsquo;un fichier Global.</span><span id="p45"><span id="51">asax</span> <span id="p43">(même si <span id="49">Session_Start</span> et <span id="50">Session_End</span> sont vides)</span></span></span></li>
<li style="text-align: justify;"><span style="color: #000000;">L&rsquo;application <span id="52">Flush</span> <span id="53">la</span> réponse, trop tôt&#8230;</span></li>
<li style="text-align: justify;"><span style="color: #000000;">Vous n&rsquo;utilisez pas la session avant le Flush</span></li>
</ul>
<p style="text-align: justify;"><strong><span id="p73" style="color: #000000;">Qu&rsquo;est-ce que cela signifie ?</span></strong></p>
<p style="text-align: justify;"><span id="p59" style="color: #000000;">La session n&rsquo;est pas réellement créée tant que l&rsquo;on ne stocke rien dedans, donc le cookie avec l&rsquo;<span id="67" class="s-rg-t">ID</span> de session n&rsquo;est pas envoyé au navigateur.</span><span id="p74" style="color: #000000;"> En effet, tant que l&rsquo;on ajoute rien dans la session pour la première fois, <span id="75" class="s-rg-t">ASP</span>.</span><span id="p76" style="color: #000000;">NET essaie d&rsquo;envoyer le cookie, mais comme les en-têtes sont déjà partis, cela est impossible&#8230;</span><span id="p77" style="color: #000000;"> <span id="80" class="s-rg-t">d</span>&lsquo;où l&rsquo;erreur.</span></p>
<p style="text-align: justify;"><strong>Comment résoudre ce problème ? </strong></p>
<p style="text-align: justify;"><span style="color: #000000;">Dans notre situation stocker la &laquo;&nbsp;SessionID&nbsp;&raquo; dans une variable a suffi à la résolution de ce problème :</span></p>
<p><span style="color: #0000ff;">void</span> Session_Start(<span style="color: #0000ff;">object</span> sender, <span style="color: #99ccff;">EventArgs</span> e){</p>
<p><span style="color: #008000;"><span style="color: #0000ff;">      </span>// Code qui s&rsquo;exécute lorsqu&rsquo;une nouvelle session démarre</span></p>
<p><span style="color: #000000;"><span style="color: #0000ff;"><span style="color: #0000ff;">      </span>string</span> sessionId = Session.SessionID;</span></p>
<p><span style="color: #008000;"><span style="color: #0000ff;">      </span>//Le code &#8230;</span><br />
}</p>
<p style="color: #000000; text-align: justify;">Si cette solution ne corrige pas le problème, il suffit d&rsquo;accéder à une variable session lorsque l&rsquo;on n&rsquo;est pas dans un AsyncPostback, par exemple dans le page_load :</p>
<p style="color: #000000;"><span style="color: #0000ff;">void</span> Page_Load(<span style="color: #0000ff;">object</span> sender, EventArgs e)<span style="font-size: 13px;">{ </span></p>
<p style="color: #000000;"><span style="color: #0000ff;">      if</span><span style="font-size: 13px;"> (Session.IsNewSession) { </span></p>
<p style="color: #000000;"><span style="font-size: 13px;"> <span style="color: #0000ff;">            </span>Session["SessionCorrective"] = </span><span style="color: #0000ff;">true</span><span style="font-size: 13px;">; </span></p>
<p style="color: #000000;"><span style="font-size: 13px;"> <span style="color: #0000ff;">      </span>} </span></p>
<p style="color: #000000;"><span style="font-size: 13px;"> }</span></p>
<p><em>En espérant que cela vous soit utile !</em></p>
<p>Cet article <a rel="nofollow" href="http://blog.viskali.fr/resoudre-lerreur-letat-de-session-a-cree-un-id-de-session/">Résoudre l&rsquo;erreur : L&rsquo;état de session a créé un ID de session&#8230;</a> est apparu en premier sur <a rel="nofollow" href="http://blog.viskali.fr">Blog - VISKALI</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viskali.fr/resoudre-lerreur-letat-de-session-a-cree-un-id-de-session/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
