<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.iis.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:cs="http://blogs.iis.net/"><channel><title>Sunday Morning Musings on IIS : asp</title><link>http://blogs.iis.net/lprete/archive/tags/asp/default.aspx</link><description>Tags: asp</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Session_OnEnd, Classic ASP and IIS 7.0</title><link>http://blogs.iis.net/lprete/archive/2009/01/04/session-onend-classic-asp-and-iis-7-0.aspx</link><pubDate>Sun, 04 Jan 2009 11:00:46 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2846082</guid><dc:creator>lprete</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/lprete/rsscomments.aspx?PostID=2846082</wfw:commentRss><comments>http://blogs.iis.net/lprete/archive/2009/01/04/session-onend-classic-asp-and-iis-7-0.aspx#comments</comments><description>&lt;p&gt;I have found that a classic ASP application that worked just fine on IIS 5.0 and IIS 6.0 may have some problems in IIS 7.0 if it is making use of the Session_OnEnd function in Global.asa.&lt;/p&gt;  &lt;p&gt;Here is the set up, I have a very simple global.asa file which increments &lt;strong&gt;&lt;em&gt;SessionCount&lt;/em&gt;&lt;/strong&gt; in &lt;strong&gt;Session_OnStart&lt;/strong&gt; and decrements &lt;strong&gt;&lt;em&gt;SessionCount&lt;/em&gt;&lt;/strong&gt; in &lt;strong&gt;Session_OnEnd&lt;/strong&gt;:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="576" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="562"&gt;         &lt;p&gt;&lt;font face="Courier New" size="2"&gt;Sub Session_OnStart&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Application(&amp;quot;SessionCount&amp;quot;)=Application(&amp;quot;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Session&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Count&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;&amp;quot;)+1              &lt;br /&gt;End Sub &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" size="2"&gt;Sub Session_OnEnd              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Application(&amp;quot;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Session&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Count&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;&amp;quot;)=Application(&amp;quot;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Session&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Count&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;&amp;quot;)-1              &lt;br /&gt;End Sub&lt;/font&gt; &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;and a very simple asp page which reports the value of &lt;strong&gt;&lt;em&gt;SessionCount&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="574" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;font face="Courier New" size="2"&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="562"&gt;         &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;lt;%              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; response.write(&amp;quot;Session Counter Equals:&amp;#160; &amp;quot;)               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; response.write(Application(&amp;quot;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Session&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Count&amp;quot;))              &lt;br /&gt;%&amp;gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Seems simple enough right?&lt;/p&gt;  &lt;p&gt;Well it is, and on IIS 5.0 and IIS 6.0 this simple set up works just as expected.&amp;#160; However, on IIS 7.0 the session count never decrements.&lt;/p&gt;  &lt;p&gt;To allow &lt;strong&gt;Session_OnEnd &lt;/strong&gt;to execute correctly we need to set &lt;font face="Courier New" size="2"&gt;RunOnEndAnonymously=False&lt;/font&gt;.&amp;#160; To set this value we just need to run this command:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="574" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;font face="Courier New" color="#ff0000" size="2"&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="562"&gt;         &lt;p&gt;&lt;font face="Courier New" color="#ff0000" size="2"&gt;appcmd set config /section:system.webServer/asp /runOnEndAnonymously:false&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Once this change is made the &lt;strong&gt;applicationhost.config&lt;/strong&gt; should have the following entry:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="574" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;font face="Courier New" color="#ff0000" size="2"&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="562"&gt;         &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;lt;system.webServer&amp;gt;              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp runOnEndAnonymously=&amp;quot;false&amp;quot; /&amp;gt;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/asp&amp;gt;               &lt;br /&gt;&amp;lt;/system.webServer&amp;gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;After this the &lt;strong&gt;Session_OnEnd&lt;/strong&gt; event should fire and run successfully.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;NOTE: We could also use &lt;em&gt;adsutil.vbs &lt;/em&gt;to make the needed change. &lt;strong&gt;IIS 6.0 Management Compatibility Role Service&lt;/strong&gt; will need to be installed.&amp;#160; Once it is installed we need to run this command to make the needed change:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="574" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;font face="Courier New" color="#ff0000" size="2"&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="562"&gt;         &lt;p&gt;&lt;font face="Courier New" color="#ff0000" size="2"&gt;cscript.exe c:\inetpub\adminscripts\adsutil.vbs set w3svc/AspRunOnEndAnonymously false&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2846082" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/lprete/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.iis.net/lprete/archive/tags/asp/default.aspx">asp</category><category domain="http://blogs.iis.net/lprete/archive/tags/RunOnEndAnonymously/default.aspx">RunOnEndAnonymously</category><category domain="http://blogs.iis.net/lprete/archive/tags/AspRunOnEndAnonymously/default.aspx">AspRunOnEndAnonymously</category><category domain="http://blogs.iis.net/lprete/archive/tags/Session_5F00_OnEnd/default.aspx">Session_OnEnd</category></item></channel></rss>