<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/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/"><channel><title>Paulo Morgado : IIS</title><link>http://msmvps.com/blogs/paulomorgado/archive/tags/IIS/default.aspx</link><description>Tags: IIS</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>IIS/ASP.NET Cookieless Support Not Working As Expected</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/08/01/iis-asp-net-cookieless-support-not-working-as-expected.aspx</link><pubDate>Fri, 01 Aug 2008 00:23:02 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1642888</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1642888</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1642888</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/08/01/iis-asp-net-cookieless-support-not-working-as-expected.aspx#comments</comments><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;In one of the environments I work, cookies cannot be used because the pages run inside web browser controls running on a client application and cookies end up being shared by all browsers.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Fortunately, &lt;a title="ASP.NET Developer Center" href="http://msdn.microsoft.com/asp.net/" target="_blank"&gt;ASP.NET&lt;/a&gt; allows us to persist some cookies as part of the URL.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;To persist the session state identifier cookie in the URL we just need to add the following configuration:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;sessionState &lt;/span&gt;&lt;span style="color:red;"&gt;cookieless&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;UseUri&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;and you’ll get URLs like this:&lt;/p&gt;

&lt;p style="margin-left:10px;font-family:consolas, courier new, monospace;"&gt;http://localhost/Cookieless/(S(jcmwek3ja0lvdpbwoacpjirv))/default.aspx&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;The way &lt;a title="IIS.net : The Official Microsoft IIS Site" href="http://www.iis.net/" target="_blank"&gt;IIS&lt;/a&gt; and ASP.NET do this is by IIS removing the section between parenthesis after the virtual directory path and adding the &lt;strong&gt;AspFilterSessionId&lt;/strong&gt; HTTP header to the request. Than, ASP.NET picks it up and extracts the cookie.&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;I wrote this simple page to demonstrate this working:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="background:#ffee62;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;@ &lt;/span&gt;&lt;span style="color:#a31515;"&gt;Page &lt;/span&gt;&lt;span style="color:red;"&gt;Language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;C#&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;true&amp;quot; &lt;/span&gt;&lt;span style="background:#ffee62;"&gt;%&amp;gt;

&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DOCTYPE &lt;/span&gt;&lt;span style="color:red;"&gt;html PUBLIC &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;html &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;head &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Head1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;head&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;form &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;form1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;div&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;table&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Raw URL&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffee62;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;= &lt;/span&gt;Request.RawUrl &lt;span style="background:#ffee62;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Cookiless Cookies&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;br &lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;AspFilterSessionId Request HTTP Header&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffee62;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;= &lt;/span&gt;Request.Headers[&lt;span style="color:#a31515;"&gt;&amp;quot;AspFilterSessionId&amp;quot;&lt;/span&gt;] &lt;span style="background:#ffee62;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Session ID&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffee62;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;= &lt;/span&gt;Session.SessionID &lt;span style="background:#ffee62;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;table&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;div&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;form&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;html&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;For the above URL, we&amp;#39;ll get a page like this:&lt;/p&gt;

&lt;p style="border-right:thin outset;padding-right:20px;border-top:thin inset;padding-left:20px;padding-bottom:20px;overflow:auto;border-left:thin inset;padding-top:20px;border-bottom:thin outset;"&gt;
  &lt;table&gt;
      &lt;tr&gt;
        &lt;td&gt;Raw URL&lt;/td&gt;

        &lt;td&gt;/Cookieless/default.aspx&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td&gt;Cookiless Cookies 
          &lt;br /&gt;AspFilterSessionId Request HTTP Header&lt;/td&gt;

        &lt;td&gt;S(jcmwek3ja0lvdpbwoacpjirv)&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td&gt;Session ID&lt;/td&gt;

        &lt;td&gt;jcmwek3ja0lvdpbwoacpjirv&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;IIS strips these cookies even for serving static content like cascading stylesheets.&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;You can test this by creating a default theme. You can do this by adding a &lt;strong&gt;Default&lt;/strong&gt; folder under the &lt;strong&gt;App_Themes&lt;/strong&gt; folder and adding a &lt;strong&gt;Styles.css&lt;/strong&gt; file to it:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:#a31515;"&gt;body
&lt;/span&gt;{
    &lt;span style="color:red;"&gt;background-color&lt;/span&gt;: &lt;span style="color:blue;"&gt;Yellow&lt;/span&gt;;
}
&lt;span style="color:#a31515;"&gt;table&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;tr&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;td
&lt;/span&gt;{
    &lt;span style="color:red;"&gt;border&lt;/span&gt;: &lt;span style="color:blue;"&gt;thin solid black&lt;/span&gt;;
}&lt;/pre&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;and setting the theme as default using the following configuration&lt;strong&gt;:&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;p&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;sessionState &lt;/span&gt;&lt;span style="color:red;"&gt;cookieless&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;UseUri&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;pages &lt;/span&gt;&lt;span style="color:red;"&gt;theme&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Default&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;And you&amp;#39;ll get a &amp;quot;pretier&amp;quot; page:&lt;/p&gt;

&lt;p style="border-right:thin outset;padding-right:20px;border-top:thin inset;padding-left:20px;padding-bottom:20px;overflow:auto;border-left:thin inset;padding-top:20px;border-bottom:thin outset;background-color:yellow;"&gt;
  &lt;table style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;
      &lt;tr&gt;
        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;Raw URL&lt;/td&gt;

        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;/Cookieless/default.aspx&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;Cookiless Cookies 
          &lt;br /&gt;AspFilterSessionId Request HTTP Header&lt;/td&gt;

        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;S(jcmwek3ja0lvdpbwoacpjirv)&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;Session ID&lt;/td&gt;

        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;jcmwek3ja0lvdpbwoacpjirv&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;If you have special needs for your session state identifiers, you can implement your own &lt;a title="ISessionIDManager Interface" href="http://msdn.microsoft.com/library/System.Web.SessionState.ISessionIDManager.aspx" target="_blank"&gt;session identifier manager&lt;/a&gt;.&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;But if you want to use cookieless cookies, you only have one way to do it: extend the &lt;a title="SessionIDManager Class" href="http://msdn.microsoft.com/library/System.Web.SessionState.SessionIDManager.aspx" target="_blank"&gt;SessionIDManager class&lt;/a&gt;:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SessionIdManager &lt;/span&gt;: System.Web.SessionState.&lt;span style="color:#2b91af;"&gt;SessionIDManager
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;public override string &lt;/span&gt;CreateSessionID(System.Web.&lt;span style="color:#2b91af;"&gt;HttpContext &lt;/span&gt;context)
    {
        &lt;span style="color:blue;"&gt;string &lt;/span&gt;id = System.&lt;span style="color:#2b91af;"&gt;Guid&lt;/span&gt;.NewGuid().ToString(&lt;span style="color:#a31515;"&gt;&amp;quot;B&amp;quot;&lt;/span&gt;);

        &lt;span style="color:blue;"&gt;return &lt;/span&gt;id;
    }

    &lt;span style="color:blue;"&gt;public override bool &lt;/span&gt;Validate(&lt;span style="color:blue;"&gt;string &lt;/span&gt;id)
    {
        &lt;span style="color:blue;"&gt;try
        &lt;/span&gt;{
            &lt;span style="color:blue;"&gt;new &lt;/span&gt;System.&lt;span style="color:#2b91af;"&gt;Guid&lt;/span&gt;(id);
            &lt;span style="color:blue;"&gt;return true&lt;/span&gt;;
        }
        &lt;span style="color:blue;"&gt;catch
        &lt;/span&gt;{
            &lt;span style="color:blue;"&gt;return false&lt;/span&gt;;
        }
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;and configure the session state module to use it:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;sessionState &lt;/span&gt;&lt;span style="color:red;"&gt;cookieless&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;UseUri&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;sessionIDManagerType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;SessionIdManager&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;pages &lt;/span&gt;&lt;span style="color:red;"&gt;theme&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Default&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;And we&amp;#39;ll end up with this nice page:&lt;/p&gt;

&lt;p style="margin-left:10px;font-family:consolas, courier new, monospace;"&gt;http://localhost/Cookieless/(S(%7b0861e55a-e29b-4b6f-825b-1e1d4c57f095%7d))/default.aspx&lt;/p&gt;

&lt;p style="border-right:thin outset;padding-right:20px;border-top:thin inset;padding-left:20px;padding-bottom:20px;overflow:auto;border-left:thin inset;padding-top:20px;border-bottom:thin outset;"&gt;
  &lt;table&gt;
      &lt;tr&gt;
        &lt;td&gt;Raw URL&lt;/td&gt;

        &lt;td&gt;/Cookieless/(S({0861e55a-e29b-4b6f-825b-1e1d4c57f095}))/default.aspx&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td&gt;Cookiless Cookies 
          &lt;br /&gt;AspFilterSessionId Request HTTP Header&lt;/td&gt;

        &lt;td&gt;&amp;#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td&gt;Session ID&lt;/td&gt;

        &lt;td&gt;{0861e55a-e29b-4b6f-825b-1e1d4c57f095}&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;OOPS! What happened here?&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Looks like IIS was unable to transfer the cookies to the appropriate HTTP header but ASP.NET was able to find the requested resource. On the other hand, IIS couldn’t find the &lt;strong&gt;http://localhost/Cookieless/(S(%7b0861e55a-e29b-4b6f-825b-1e1d4c57f095%7d))App_Themes/Default/Styles.css&lt;/strong&gt;.&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;This happens in these environments:&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;th&gt;Operating System&lt;/th&gt;

      &lt;th&gt;IIS&lt;/th&gt;

      &lt;th&gt;ASP.NET&lt;/th&gt;
    &lt;/tr&gt;
  
    &lt;tr&gt;
      &lt;td&gt;Windows XP Pro SP3&lt;/td&gt;

      &lt;td&gt;5.1&lt;/td&gt;

      &lt;td&gt;2.0 SP1, 3.5&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;Windows Server 2003 R2&lt;/td&gt;

      &lt;td&gt;6&lt;/td&gt;

      &lt;td&gt;2.0 SP1, 3.5&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;Windows Server 2008&lt;/td&gt;

      &lt;td&gt;7&lt;/td&gt;

      &lt;td&gt;2.0 SP1, 3.5&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Fortunately, in IIS 7 you can have HTTP modules in integrated pipeline mode that are called for every resource requested to IIS.&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Your module doesn’t even need to do nothing. It just needs to exist:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Module &lt;/span&gt;: System.Web.&lt;span style="color:#2b91af;"&gt;IHttpModule
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;public void &lt;/span&gt;Dispose()
    {
    }

    &lt;span style="color:blue;"&gt;public void &lt;/span&gt;Init(System.Web.&lt;span style="color:#2b91af;"&gt;HttpApplication &lt;/span&gt;context)
    {
    }
}&lt;/pre&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;and be added to the configuration:&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;sessionState &lt;/span&gt;&lt;span style="color:red;"&gt;cookieless&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;UseUri&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;sessionIDManagerType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;SessionIdManager&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;pages &lt;/span&gt;&lt;span style="color:red;"&gt;theme&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Default&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;modules&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Module&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;preCondition&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;integratedMode&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Module&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;modules&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;And our “pretty” page is back:&lt;/p&gt;

&lt;p style="border-right:thin outset;padding-right:20px;border-top:thin inset;padding-left:20px;padding-bottom:20px;overflow:auto;border-left:thin inset;padding-top:20px;border-bottom:thin outset;background-color:yellow;"&gt;
  &lt;table style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;
      &lt;tr&gt;
        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;Raw URL&lt;/td&gt;

        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;/Cookieless/default.aspx&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;Cookiless Cookies 
          &lt;br /&gt;AspFilterSessionId Request HTTP Header&lt;/td&gt;

        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;S({0861e55a-e29b-4b6f-825b-1e1d4c57f095})&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;Session ID&lt;/td&gt;

        &lt;td style="border-right:black thin solid;border-top:black thin solid;border-left:black thin solid;border-bottom:black thin solid;"&gt;{0861e55a-e29b-4b6f-825b-1e1d4c57f095}&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Is it just me, or there’s something definitely wrong here?&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;That’s why I opened this &lt;a title="IIS/ASP.NET Cookieless Support Not Working As Expected" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=359227" target="_blank"&gt;bug&lt;/a&gt; on &lt;a title="Microsoft Connect" href="http://connect.microsoft.com/" target="_blank"&gt;Microsoft Connect&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1642888" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/IIS/default.aspx">IIS</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/IIS7/default.aspx">IIS7</category></item><item><title>Other Ways For Making PathInfo And ASP.NET Themes Work Together</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/07/25/other-ways-for-making-pathinfo-and-asp-net-themes-work-together.aspx</link><pubDate>Fri, 25 Jul 2008 00:07:36 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1642074</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1642074</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1642074</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/07/25/other-ways-for-making-pathinfo-and-asp-net-themes-work-together.aspx#comments</comments><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;On my &lt;a title="Making PathInfo And ASP.NET Themes Work Together" href="http://msmvps.com/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx" target="_blank"&gt;last post&lt;/a&gt; I wrote about a solution for &lt;a title="PathInfo And ASP.NET Themes: Why Can’t They Work Together?" href="http://msmvps.com/blogs/paulomorgado/archive/2008/07/23/pathinfo-and-asp-net-themes-why-can-t-they-work-together.aspx" target="_blank"&gt;the problem that arises when we try the use path infos and ASP.NET Themes and Skins together&lt;/a&gt;.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;&lt;a title="Raj Kaimal" href="http://weblogs.asp.net/rajbk/" target="_blank"&gt;Raj Kaimal&lt;/a&gt;&amp;#160;&lt;a title="Making PathInfo And ASP.NET Themes Work Together" href="http://weblogs.asp.net/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx#comments" target="_blank"&gt;suggested&lt;/a&gt; rewriting all &lt;a title="LINK Element | link Object" href="http://msdn.microsoft.com/library/ms535848.aspx" target="_blank"&gt;LINK&lt;/a&gt; HTML elements URLs to the correct URL as seen from the client. Something like this:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;void &lt;/span&gt;HttpApplicationPreRequestHandlerExecute(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;e)
{
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;httpApplication = sender &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.&lt;span style="color:#2b91af;"&gt;HttpApplication&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;var &lt;/span&gt;httpContext = httpApplication.Context;

    &lt;span style="color:blue;"&gt;var &lt;/span&gt;page = httpContext.CurrentHandler &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.&lt;span style="color:#2b91af;"&gt;Page&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;((page != &lt;span style="color:blue;"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; !&lt;span style="color:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(httpContext.Request.PathInfo))
    {
        page.PreRenderComplete += &lt;span style="color:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="color:blue;"&gt;object &lt;/span&gt;source, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;args)
        {
            &lt;span style="color:blue;"&gt;var &lt;/span&gt;p = source &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.&lt;span style="color:#2b91af;"&gt;Page&lt;/span&gt;;

            &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(System.Web.UI.&lt;span style="color:#2b91af;"&gt;Control &lt;/span&gt;headerControl &lt;span style="color:blue;"&gt;in &lt;/span&gt;p.Header.Controls)
            {
                &lt;span style="color:blue;"&gt;var &lt;/span&gt;link = headerControl &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.HtmlControls.&lt;span style="color:#2b91af;"&gt;HtmlLink&lt;/span&gt;;
                &lt;span style="color:blue;"&gt;if &lt;/span&gt;(link != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
                {
                    link.Href = p.ResolveUrl(link.Href);
                }
            }
        };
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;With this approach you still have a problem (which mine didn’t solve) with post backs because the rendering of the &lt;a title="ACTION Attribute | action Property" href="http://msdn.microsoft.com/library/ms533063.aspx" target="_blank"&gt;ACTION&lt;/a&gt; of the HTML &lt;a title="FORM Element | form Object" href="http://msdn.microsoft.com/library/ms535249.aspx" target="_blank"&gt;FORM&lt;/a&gt; is also &lt;a title="FORM ACTION not rendered correctly when the reques has a PathInfo" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=357669" target="_blank"&gt;broken&lt;/a&gt;.&lt;/p&gt;

&lt;p align="justify"&gt;&lt;a href="http://weblogs.pontonetpt.com/israelaece/"&gt;Israel Aéce&lt;/a&gt;&amp;#160;&lt;a title="Fazendo Com Que PathInfo E ASP.NET Themes Coexistam" href="http://weblogs.pontonetpt.com/pjmorgado/posts/27968.aspx#27970" target="_blank"&gt;suggested&lt;/a&gt; the use of the &lt;a title="BASE Element | base Object" href="http://msdn.microsoft.com/library/ms535191.aspx" target="_blank"&gt;BASE&lt;/a&gt; HTML element to re-base relative URLs. Something like this:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;void &lt;/span&gt;HttpApplicationPreRequestHandlerExecute(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;e)
{
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;httpApplication = sender &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.&lt;span style="color:#2b91af;"&gt;HttpApplication&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;var &lt;/span&gt;httpContext = httpApplication.Context;

    &lt;span style="color:blue;"&gt;var &lt;/span&gt;page = httpContext.CurrentHandler &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.&lt;span style="color:#2b91af;"&gt;Page&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;((page != &lt;span style="color:blue;"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; !&lt;span style="color:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(httpContext.Request.PathInfo))
    {
        page.PreRenderComplete += &lt;span style="color:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="color:blue;"&gt;object &lt;/span&gt;source, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;args)
        {
            page.Init += &lt;span style="color:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="color:blue;"&gt;object &lt;/span&gt;source, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;args)
            {
                &lt;span style="color:blue;"&gt;var &lt;/span&gt;p = source &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.&lt;span style="color:#2b91af;"&gt;Page&lt;/span&gt;;

                &lt;span style="color:blue;"&gt;var &lt;/span&gt;htmlBase = &lt;span style="color:blue;"&gt;new &lt;/span&gt;System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;WebControl&lt;/span&gt;(System.Web.UI.&lt;span style="color:#2b91af;"&gt;HtmlTextWriterTag&lt;/span&gt;.Base);
                htmlBase.Attributes.Add(&lt;span style="color:#a31515;"&gt;&amp;quot;href&amp;quot;&lt;/span&gt;, p.Request.Url.GetLeftPart(System.&lt;span style="color:#2b91af;"&gt;UriPartial&lt;/span&gt;.Authority) + p.Request.CurrentExecutionFilePath);
                p.Header.Controls.Add(htmlBase);
            };
        };
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;This seems like the better solution except if your site sits behind several security perimeters and it is not possible to be sure what the domain is as seem from the client side, which was my problem to begin with.&lt;/p&gt;

&lt;p align="justify"&gt;But if you are thinking of calling &lt;a title="HttpServerUtility.Executet Method" href="http://msdn.microsoft.com/library/System.Web.HttpServerUtility.Execute.aspx" target="_blank"&gt;Server.Execute&lt;/a&gt;, &lt;a title="HttpServerUtility.TransferRequest Method" href="http://msdn.microsoft.com/library/System.Web.HttpServerUtility.TransferRequest.aspx" target="_blank"&gt;Server.TransferRequest&lt;/a&gt; or &lt;a title="HttpServerUtility.TransferRequest Method" href="http://msdn.microsoft.com/library/System.Web.HttpServerUtility.TransferRequest.aspx" target="_blank"&gt;Server.TransferRequest&lt;/a&gt;, neither of these two solutions will work.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1642074" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/IIS/default.aspx">IIS</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/IIS7/default.aspx">IIS7</category></item><item><title>WCSF 2.0 And IIS7 Integrated Pipeline Mode</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/03/11/wcsf-2-0-and-iis7-integrated-pipeline-mode.aspx</link><pubDate>Tue, 11 Mar 2008 10:06:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1539873</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>19</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1539873</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1539873</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/03/11/wcsf-2-0-and-iis7-integrated-pipeline-mode.aspx#comments</comments><description>&lt;p align="justify"&gt;While preparing the demos for &lt;a title="WEB10 - Web Client Software Factory: Building RIAs with ASP.NET AJAX and WCSF" href="http://www.techdays.pt/session/2008/WEB10.aspx" target="_blank"&gt;my session&lt;/a&gt; at &lt;a title="TechDays Portugal - The biggest and greaetest IT event in Portugal" href="http://www.techdays.pt/" target="_blank"&gt;TechDays Portugal 2008&lt;/a&gt;, I&amp;#39;ve noticed that the &lt;a title="Web Client Software Factory" href="http://www.codeplex.com/websf/" target="_blank"&gt;Web Client Software Factory 2.0&lt;/a&gt; doesn&amp;#39;t work with &lt;a title="IIS.net: Home: The Official Microsoft IIS Site" href="http://www.iis.net/" target="_blank"&gt;IIS7&lt;/a&gt; in &lt;a title="Enhance Your Apps with the Integrated ASP.NET Pipeline" href="http://msdn2.microsoft.com/magazine/cc135973.aspx" target="_blank"&gt;integrated pipeline mode&lt;/a&gt; because it&amp;#39;s trying to access the &lt;a title="HttpContext.Request Property" href="http://msdn2.microsoft.com/library/System.Web.HttpContext.Request.aspx" target="_blank"&gt;Request&lt;/a&gt; property of the &lt;a title="HttpContext.Current Property" href="http://msdn2.microsoft.com/library/System.Web.HttpContext.Current.aspx" target="_blank"&gt;current HTTP Context&lt;/a&gt; from the &lt;a title="Application_Start method" href="http://msdn2.microsoft.com/library/de0d8a1c-b1bc-48e1-b246-26e32289a82f.aspx" target="_blank"&gt;HTTP Application Start &amp;quot;event&amp;quot;&lt;/a&gt;, &lt;a title="IIS7 Integrated mode: Request is not available in this context exception in Application_Start" href="http://mvolo.com/blogs/serverside/archive/2007/11/10/Integrated-mode-Request-is-not-available-in-this-context-in-Application_5F00_Start.aspx" target="_blank"&gt;which is not available at this point&lt;/a&gt;.&lt;/p&gt;
&lt;p align="justify"&gt;This is an already &lt;a title="Request is not available in this context - Feb 2008" href="http://www.codeplex.com/websf/Thread/View.aspx?ThreadId=23221" target="_blank"&gt;known issue&lt;/a&gt; and you can &lt;a title="IIS7 Issue - Microsoft.Practices.CompositeWeb uses HttpRequest in Application_Start Title is required" href="http://www.codeplex.com/websf/WorkItem/View.aspx?WorkItemId=15451" target="_blank"&gt;vote to get it solved&lt;/a&gt;.&lt;/p&gt;
&lt;p align="justify"&gt;Meanwhile, there are two ways to work around this:&lt;/p&gt;
&lt;h4 align="justify"&gt;Changing the Composite Web Application Block&lt;/h4&gt;
&lt;p align="justify"&gt;If you are comfortable with having your own build of this block instead of the provided strong named one, you only need to change one statement in the WebConfigModuleInfoStore class (WCSFBlocks-Feb2008\CompositeWeb\Source\CompositeWeb\Services\WebConfigModuleInfoStore.cs, line 105).&lt;/p&gt;
&lt;p align="justify"&gt;Just replace:&lt;/p&gt;&lt;pre class="code" style="BORDER-RIGHT:thin outset;PADDING-RIGHT:10px;BORDER-TOP:thin groove;PADDING-LEFT:10px;BACKGROUND:#ffffff;OVERFLOW-X:auto;PADDING-BOTTOM:10px;BORDER-LEFT:thin groove;PADDING-TOP:10px;BORDER-BOTTOM:thin outset;FONT-FAMILY:consolas;"&gt;configuration =
    &lt;span style="COLOR:#2b91af;"&gt;WebConfigurationManager&lt;/span&gt;.OpenWebConfiguration(context.Request.ApplicationPath + &lt;span style="COLOR:#a31515;"&gt;&amp;quot;/&amp;quot; &lt;/span&gt;+
                                                 configFilePath.Replace(context.Request.PhysicalApplicationPath, &lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;));&lt;/pre&gt;
&lt;p&gt;with:&lt;/p&gt;&lt;pre class="code" style="BORDER-RIGHT:thin outset;PADDING-RIGHT:10px;BORDER-TOP:thin groove;PADDING-LEFT:10px;BACKGROUND:#ffffff;OVERFLOW-X:auto;PADDING-BOTTOM:10px;BORDER-LEFT:thin groove;PADDING-TOP:10px;BORDER-BOTTOM:thin outset;FONT-FAMILY:consolas;"&gt;configuration =
    &lt;font color="#2b91af"&gt;WebConfigurationManager&lt;/font&gt;.OpenWebConfiguration(&lt;font color="#2b91af"&gt;HttpRuntime&lt;/font&gt;.AppDomainAppVirtualPath + &lt;span style="COLOR:#a31515;"&gt;&amp;quot;/&amp;quot; &lt;/span&gt;+
                                                 configFilePath.Substring(&lt;font color="#2b91af"&gt;HttpRuntime&lt;/font&gt;.AppDomainAppPath.Length));&lt;/pre&gt;
&lt;h4&gt;Changing the application&lt;/h4&gt;
&lt;p align="justify"&gt;If you prefer to (or have to) use the provided and strong named version of the Composite Web Application Block, you can always change your application.&lt;/p&gt;
&lt;p align="justify"&gt;Just open the generated global.asax file:&lt;/p&gt;&lt;pre class="code" style="BORDER-RIGHT:thin outset;PADDING-RIGHT:10px;BORDER-TOP:thin groove;PADDING-LEFT:10px;BACKGROUND:#ffffff;OVERFLOW-X:auto;PADDING-BOTTOM:10px;BORDER-LEFT:thin groove;PADDING-TOP:10px;BORDER-BOTTOM:thin outset;FONT-FAMILY:consolas;"&gt;&lt;span style="BACKGROUND:#ffee62;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;@ &lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Application &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Language&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;C#&amp;quot; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Inherits&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;Microsoft.Practices.CompositeWeb.WebClientApplication&amp;quot; &lt;/span&gt;&lt;span style="BACKGROUND:#ffee62;"&gt;%&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;and add:&lt;/p&gt;&lt;pre class="code" style="BORDER-RIGHT:thin outset;PADDING-RIGHT:10px;BORDER-TOP:thin groove;PADDING-LEFT:10px;BACKGROUND:#ffffff;OVERFLOW-X:auto;PADDING-BOTTOM:10px;BORDER-LEFT:thin groove;PADDING-TOP:10px;BORDER-BOTTOM:thin outset;FONT-FAMILY:consolas;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;script &lt;/span&gt;&lt;span style="COLOR:red;"&gt;RunAt&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;server&amp;quot;&amp;gt;

    private bool &lt;/span&gt;initialized;

    &lt;span style="COLOR:blue;"&gt;protected override void &lt;/span&gt;Application_Start(&lt;span style="COLOR:blue;"&gt;object &lt;/span&gt;sender, &lt;span style="COLOR:#2b91af;"&gt;EventArgs &lt;/span&gt;e)
    {
        &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.initialized = &lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;;
    }

    &lt;span style="COLOR:blue;"&gt;protected void &lt;/span&gt;Application_BeginRequest(&lt;span style="COLOR:blue;"&gt;object &lt;/span&gt;sender, &lt;span style="COLOR:#2b91af;"&gt;EventArgs &lt;/span&gt;e)
    {
        &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(!&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.initialized)
        {
            &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.initialized = &lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;;

            &lt;span style="COLOR:blue;"&gt;base&lt;/span&gt;.Application_Start(sender, e);
        }
    }

&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;script&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1539873" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WCSF/default.aspx">WCSF</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PnP/default.aspx">PnP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftwareFactories/default.aspx">SoftwareFactories</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/IIS/default.aspx">IIS</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Techdays/default.aspx">Techdays</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TechdaysPT08/default.aspx">TechdaysPT08</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/IIS7/default.aspx">IIS7</category></item><item><title>Are Page Modules Still Useful In IIS7?</title><link>http://msmvps.com/blogs/paulomorgado/archive/2007/10/15/are-page-modules-still-useful-in-iis7.aspx</link><pubDate>Mon, 15 Oct 2007 00:19:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1247551</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1247551</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1247551</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2007/10/15/are-page-modules-still-useful-in-iis7.aspx#comments</comments><description>&lt;p&gt;With &lt;a title="Internet Information Services 7.0" href="http://www.iis.net/default.aspx?tabid=7" target="_blank"&gt;IIS7&lt;/a&gt; a new transfer method is available in the &lt;a title="HttpServerUtility Class" href="http://msdn2.microsoft.com/library/System.Web.HttpServerUtility.aspx" target="_blank"&gt;HttpServerUtility class&lt;/a&gt;. It&amp;#39;s the &lt;a title="HttpServerUtility.TransferRequest Method" href="http://msdn2.microsoft.com/library/System.Web.HttpServerUtility.TransferRequest.aspx" target="_blank"&gt;TransferRequest method&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;What this method is intended to do is behave like the &lt;a title="HttpResponse.Redirect Method" href="http://msdn2.microsoft.com/library/System.Web.HttpResponse.Redirect.aspx" target="_blank"&gt;HttpResponse.Redirect method&lt;/a&gt; without the &lt;a title="The Cost Of Client-Side Redirects In ASP.NET And Using Page Modules" href="http://msmvps.com/blogs/paulomorgado/pages/the-cost-of-client-side-redirects-in-asp-net-and-using-page-modules-.aspx" target="_blank"&gt;penalty of traveling to the client and back&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I said &amp;quot;is intended to behave&amp;quot; because it still doesn&amp;#39;t, like &lt;a title="Lu&amp;iacute;s Abreu&amp;#39;s Blog" href="http://msmvps.com/blogs/LuisAbreu/" target="_blank"&gt;Luís Abreu&lt;/a&gt; &lt;a title="Are you using the new TransferRequest?" href="http://msmvps.com/blogs/luisabreu/archive/2007/10/09/are-you-using-the-new-transferrequest.aspx" target="_blank"&gt;found out in his first attempt to use this new method&lt;/a&gt;. Fortunately, &lt;a title="Thomas Marquardt&amp;#39;s Blog" href="http://blogs.msdn.com/tmarq/" target="_blank"&gt;Thomas Marquardt&lt;/a&gt; already &lt;a title="Server.TransferRequest hangs or takes a long time to execute" href="http://blogs.msdn.com/tmarq/archive/2007/10/10/server-transferrequest-hangs-or-takes-a-long-time-to-execute.aspx" target="_blank"&gt;knows about it and said they will fix it&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;This problem that Luís ran into reminds us that there is still &lt;a title="The Cost Of Client-Side Redirects In ASP.NET And Using Page Modules" href="http://msmvps.com/blogs/paulomorgado/pages/the-cost-of-client-side-redirects-in-asp-net-and-using-page-modules-.aspx" target="_blank"&gt;too much going on&lt;/a&gt; when you call &lt;strong&gt;TransferRequest&lt;/strong&gt; that won&amp;#39;t be if a &lt;a title="Introducing ASP.NET Page Modules" href="http://msmvps.com/blogs/paulomorgado/pages/introducing-asp-net-page-modules.aspx" target="_blank"&gt;Page Module&lt;/a&gt; is used. So, I guess &lt;a title="Introducing ASP.NET Page Modules" href="http://msmvps.com/blogs/paulomorgado/pages/introducing-asp-net-page-modules.aspx" target="_blank"&gt;they&lt;/a&gt; are still useful.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1247551" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Community/default.aspx">Community</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MVP/default.aspx">MVP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PageModules/default.aspx">PageModules</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/IIS/default.aspx">IIS</category></item></channel></rss>