


      <rss version="2.0">
         <channel>
            <title><![CDATA[Vinay Rao | MPS]]></title>
            <link>http://www.simplyvinay.com/</link>
            <description>My Personal Website</description>
            <copyright>Copyright 2005 by Vinay Rao</copyright>
   
      <item>
         <title><![CDATA[Source Code made Open Source]]></title>
         <author><![CDATA[vinay]]></author>
         <description><![CDATA[I am now sharing the source code to this site under the Creative Commons License Distribution.<br><br>The terms and conditions can be read <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/in/">here</a> . As always the code can be found <a href="/Source.aspx">here</a>.<br><br>Happy Coding.<br>]]></description>
         <link><![CDATA[http://www.simplyvinay.com/Post/5/Source-Code-made-Open-Source.aspx]]></link>
         <pubDate>Wed, 25 Jun 2008 00:00:00 GMT</pubDate>
      </item>
   
      <item>
         <title><![CDATA[Site Source Available for Download]]></title>
         <author><![CDATA[vinay]]></author>
         <description><![CDATA[The source code for this is site is available for download from <a href="/Source.aspx">here</a>.<br><br>Here is a list of features that i have implemented.<br><ol><li>3 layered architecture.</li><li>MetaWeBlog implementation (Partial) [Have tested with <a href="http://www.codingrobots.com/blogjet/">BlogJet</a>].</li><li>Provider based design - Pluggable providers [Includes SqlProvider].</li><li>File system based Image gallery.</li><li>Guestbook.</li><li>Comments.<br></li><li>Complete administration of site.</li><li>RSS feeds</li><li>Technorati ping.</li><li>Caching features for performance.</li></ol>I would love to hear some feedbacks on the design so that i could better the application in any way possible.<br><br>]]></description>
         <link><![CDATA[http://www.simplyvinay.com/Post/4/Site-Source-Available-for-Download.aspx]]></link>
         <pubDate>Tue, 24 Jun 2008 00:00:00 GMT</pubDate>
      </item>
   
      <item>
         <title><![CDATA[UrlRewriting Woes]]></title>
         <author><![CDATA[vinay]]></author>
         <description><![CDATA[After spending a very long time to build this site, i finally put it in production. The prime reason for the delay was hosting which i was not able to afford up until now. <br><br>Well everything seemed to work fine on my dev machine but once i put the code in production, my URL rewriting logic failed. I was using Gaidar Magdanurov's <a href="http://www.simple-talk.com/dotnet/asp.net/a-complete-url-rewriting-solution-for-asp.net-2.0/">UrlRewiting</a> solution. From what i observed the http module was not picking up on the application load. So as a last minute change i used <a href="http://www.urlrewriting.net/">UrlRewritingNet.UrlRewrite</a>. I did not have to change much of the thing for this to work. Its pretty straight forward to setup and use.<br><br>First you have to add a config section <pre class="code"><!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 &lt;\cf13 configSections\cf2 &gt;\par ??\tab &lt;\cf13 section\cf2  \cf6 name\cf2 =\cf0 "\cf2 urlrewritingnet\cf0 "\cf2  \cf6 requirePermission\cf2 =\cf0 "\cf2 false\cf0 "\cf2  \cf6 type\cf2 =\cf0 "\cf2 UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter\cf0 "\cf2 /&gt;\par ??&lt;/\cf13 configSections\cf2 &gt;}
-->
<div style="background: white none repeat scroll 0% 50%; font-size: 10pt; color: black; font-family: Courier New; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><p style="margin: 0px;"><span style="color: blue;">&lt;</span><span style="color: maroon;">configSections</span><span style="color: blue;">&gt;</span></p><p style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: maroon;">section</span><span style="color: blue;"> </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">urlrewritingnet</span>"<span style="color: blue;"> </span><span style="color: red;">requirePermission</span><span style="color: blue;">=</span>"<span style="color: blue;">false</span>"<span style="color: blue;"> </span><span style="color: red;">type</span><span style="color: blue;">=</span>"<span style="color: blue;">UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter</span>"<span style="color: blue;">/&gt;</span></p><p style="margin: 0px;"><span style="color: blue;">&lt;/</span><span style="color: maroon;">configSections</span><span style="color: blue;">&gt;</span></p></div></pre>The next step is to define the http module ( This is where i think my other solution fails)<pre class="code"><!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 &lt;\cf13 httpModules\cf2 &gt;\par ??\tab &lt;\cf13 add\cf2  \cf6 name\cf2 =\cf0 "\cf2 UrlRewriteModule\cf0 "\cf2  \cf6 type\cf2 =\cf0 "\cf2 UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter\cf0 "\cf2 /&gt;\par ??&lt;/\cf13 httpModules\cf2 &gt;}
-->
<div style="background: white none repeat scroll 0% 50%; font-size: 10pt; color: black; font-family: Courier New; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><p style="margin: 0px;"><span style="color: blue;">&lt;</span><span style="color: maroon;">httpModules</span><span style="color: blue;">&gt;</span></p><p style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: maroon;">add</span><span style="color: blue;"> </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">UrlRewriteModule</span>"<span style="color: blue;"> </span><span style="color: red;">type</span><span style="color: blue;">=</span>"<span style="color: blue;">UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter</span>"<span style="color: blue;">/&gt;</span></p><p style="margin: 0px;"><span style="color: blue;">&lt;/</span><span style="color: maroon;">httpModules</span><span style="color: blue;">&gt;</span></p></div></pre>Now you are ready to write the rules like so.<pre class="code"><!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 &lt;\cf13 urlrewritingnet\cf2  \cf6 rewriteOnlyVirtualUrls\cf2 =\cf0 "\cf2 true\cf0 "\cf2  \cf6 contextItemsPrefix\cf2 =\cf0 "\cf2 QueryString\cf0 "\cf2  \cf6 defaultPage\cf2 =\cf0 "\cf2 default.aspx\cf0 "\cf2  \cf6 defaultProvider\cf2 =\cf0 "\cf2 RegEx\cf0 "\cf2  \cf6 xmlns\cf2 =\cf0 "\cf2 http://www.urlrewriting.net/schemas/config/2006/07\cf0 "\cf2 &gt;\par ??\tab &lt;\cf13 rewrites\cf2 &gt;\par ??\tab \tab &lt;\cf13 add\cf2  \cf6 name\cf2 =\cf0 "\cf2 Post\cf0 "\cf2  \cf6 virtualUrl\cf2 =\cf0 "\cf2 Post/(\\d+)/(.*).aspx\cf0 "\cf2  \cf6 rewriteUrlParameter\cf2 =\cf0 "\cf2 ExcludeFromClientQueryString\cf0 "\cf2  \cf6 destinationUrl\cf2 =\cf0 "\cf2 ShowBlog.aspx?ID=$1\cf0 "\cf2  \cf6 ignoreCase\cf2 =\cf0 "\cf2 true\cf0 "\cf2 /&gt;\par ??\tab &lt;/\cf13 rewrites\cf2 &gt;\par ??&lt;/\cf13 urlrewritingnet\cf2 &gt;}
-->
<div style="background: white none repeat scroll 0% 50%; font-size: 10pt; color: black; font-family: Courier New; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><p style="margin: 0px;"><span style="color: blue;">&lt;</span><span style="color: maroon;">urlrewritingnet</span><span style="color: blue;"> </span><span style="color: red;">rewriteOnlyVirtualUrls</span><span style="color: blue;">=</span>"<span style="color: blue;">true</span>"<span style="color: blue;"> </span><span style="color: red;">contextItemsPrefix</span><span style="color: blue;">=</span>"<span style="color: blue;">QueryString</span>"<span style="color: blue;"> </span><span style="color: red;">defaultPage</span><span style="color: blue;">=</span>"<span style="color: blue;">default.aspx</span>"<span style="color: blue;"> </span><span style="color: red;">defaultProvider</span><span style="color: blue;">=</span>"<span style="color: blue;">RegEx</span>"<span style="color: blue;"> </span><span style="color: red;">xmlns</span><span style="color: blue;">=</span>"<span style="color: blue;">http://www.urlrewriting.net/schemas/config/2006/07</span>"<span style="color: blue;">&gt;</span></p><p style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: maroon;">rewrites</span><span style="color: blue;">&gt;</span></p><p style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: maroon;">add</span><span style="color: blue;"> </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Post</span>"<span style="color: blue;"> </span><span style="color: red;">virtualUrl</span><span style="color: blue;">=</span>"<span style="color: blue;">Post/(\d+)/(.*).aspx</span>"<span style="color: blue;"> </span><span style="color: red;">rewriteUrlParameter</span><span style="color: blue;">=</span>"<span style="color: blue;">ExcludeFromClientQueryString</span>"<span style="color: blue;"> </span><span style="color: red;">destinationUrl</span><span style="color: blue;">=</span>"<span style="color: blue;">ShowBlog.aspx?ID=$1</span>"<span style="color: blue;"> </span><span style="color: red;">ignoreCase</span><span style="color: blue;">=</span>"<span style="color: blue;">true</span>"<span style="color: blue;">/&gt;</span></p><p style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;/</span><span style="color: maroon;">rewrites</span><span style="color: blue;">&gt;</span></p><p style="margin: 0px;"><span style="color: blue;">&lt;/</span><span style="color: maroon;">urlrewritingnet</span><span style="color: blue;">&gt;</span></p></div></pre>Well you would guess that this is all you do and everything works fine. Even i thought so, but when i was testing this, i logged into my site and the URL which i expected to be something like this "http://vinay.qsh.eu/Post/1/something.aspx" had become "http://vinay.qsh.eu/Post/1/something.aspx?ID=1". This broke my page because there are 2 parameters with the same id. It beats me as to why this is being added on login/logout. It is not a postback issue as every other postback is working fine.<br><br>How to fix this? This is what i have done.<br><br>Add a helper method to check whether if the URL is rewritten one or plain URL<pre class="code"><!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 public\cf0  \cf2 static\cf0  \cf2 bool\cf0  URLRewritten(\cf2 string\cf0  LocalPath)\par ??\{\par ??    \cf2 bool\cf0  ruleFound = \cf2 false\cf0 ;\par ??    \cf2 foreach\cf0  (UrlRewritingNet.Configuration.\cf10 RewriteSettings\cf0  rewriteSettings \cf2 in\cf0  UrlRewritingNet.Web.\cf10 UrlRewriting\cf0 .Configuration.Rewrites)\par ??    \{\par ??        UrlRewritingNet.Web.\cf10 RewriteRule\cf0  rewrite = \cf2 null\cf0 ;\par ??        \cf2 string\cf0  providerName = rewriteSettings.Provider;\par ??        \cf2 if\cf0  ((\cf2 string\cf0 .IsNullOrEmpty(providerName)))\par ??        \{\par ??            rewrite = UrlRewritingNet.Web.\cf10 UrlRewriting\cf0 .CreateRewriteRule();\par ??        \}\par ??        \cf2 else\par ??\cf0         \{\par ??            rewrite = UrlRewritingNet.Web.\cf10 UrlRewriting\cf0 .CreateRewriteRule(providerName);\par ??        \}\par ??        rewrite.Initialize(rewriteSettings);\par ??\par ??\par ??        \cf2 if\cf0  ((rewrite.IsRewrite(LocalPath)))\par ??        \{\par ??            ruleFound = \cf2 true\cf0 ;\par ??            \cf2 break\cf0 ; \par ??        \}\par ??    \}\par ??    \cf2 return\cf0  ruleFound;\par ??\}}
-->
<div style="background: white none repeat scroll 0% 50%; font-size: 10pt; color: black; font-family: Courier New; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;1</span>&nbsp;<span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">bool</span> URLRewritten(<span style="color: blue;">string</span> LocalPath)</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;2</span>&nbsp;{</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">bool</span> ruleFound = <span style="color: blue;">false</span>;</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">foreach</span> (UrlRewritingNet.Configuration.<span style="color: teal;">RewriteSettings</span> rewriteSettings <span style="color: blue;">in</span> UrlRewritingNet.Web.<span style="color: teal;">UrlRewriting</span>.Configuration.Rewrites)</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; UrlRewritingNet.Web.<span style="color: teal;">RewriteRule</span> rewrite = <span style="color: blue;">null</span>;</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">string</span> providerName = rewriteSettings.Provider;</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">if</span> ((<span style="color: blue;">string</span>.IsNullOrEmpty(providerName)))</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;10</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rewrite = UrlRewritingNet.Web.<span style="color: teal;">UrlRewriting</span>.CreateRewriteRule();</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;11</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;12</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">else</span></p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;13</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;14</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rewrite = UrlRewritingNet.Web.<span style="color: teal;">UrlRewriting</span>.CreateRewriteRule(providerName);</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;15</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;16</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rewrite.Initialize(rewriteSettings);</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;17</span>&nbsp;</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;18</span>&nbsp;</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;19</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">if</span> ((rewrite.IsRewrite(LocalPath)))</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;20</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;21</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ruleFound = <span style="color: blue;">true</span>;</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;22</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">break</span>; </p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;23</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;24</span>&nbsp;&nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;25</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">return</span> ruleFound;</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;26</span>&nbsp;}</p></div></pre>Then use this function in the LoggedIn and LoggedOut events to manage the URL<pre class="code"><!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 protected\cf0  \cf2 void\cf0  Login_LoggedIn(\cf2 object\cf0  sender, \cf10 EventArgs\cf0  e)\par ??\{\par ??    \cf2 if\cf0  (\cf10 Helpers\cf0 .URLRewritten(Request.Url.LocalPath))\par ??    \{\par ??        \cf2 if\cf0  (Request.Url.PathAndQuery.Contains(\cf13 "ReturnUrl"\cf0 ))\par ??            Response.Redirect(Request.Params[\cf13 "ReturnUrl"\cf0 ].ToString());\par ??        \cf2 else\par ??\cf0             Response.Redirect(Request.Url.LocalPath);\par ??    \}\par ??    \cf2 else\par ??\cf0     \{\par ??        \cf2 if\cf0  (Request.Url.PathAndQuery.Contains(\cf13 "ReturnUrl"\cf0 ))\par ??            Response.Redirect(Request.Params[\cf13 "ReturnUrl"\cf0 ].ToString());\par ??        \cf2 else\par ??\cf0             Response.Redirect(Request.Url.PathAndQuery);\par ??    \}\par ??\}\par ??\par ??\cf2 protected\cf0  \cf2 void\cf0  LoginStatus1_LoggedOut(\cf2 object\cf0  sender, \cf10 EventArgs\cf0  e)\par ??\{\par ??    \cf2 if\cf0  (\cf10 Helpers\cf0 .URLRewritten(Request.Url.LocalPath))\par ??    \{\par ??        Response.Redirect(Request.Url.LocalPath);\par ??    \}\par ??    \cf2 else\par ??\cf0     \{\par ??        Response.Redirect(Request.Url.PathAndQuery);\par ??    \}\par ??\}}
-->
<div style="background: white none repeat scroll 0% 50%; font-size: 10pt; color: black; font-family: Courier New; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;1</span>&nbsp;<span style="color: blue;">protected</span> <span style="color: blue;">void</span> Login_LoggedIn(<span style="color: blue;">object</span> sender, <span style="color: teal;">EventArgs</span> e)</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;2</span>&nbsp;{</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">if</span> (<span style="color: teal;">Helpers</span>.URLRewritten(Request.Url.LocalPath))</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">if</span> (Request.Url.PathAndQuery.Contains(<span style="color: maroon;">"ReturnUrl"</span>))</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Response.Redirect(Request.Params[<span style="color: maroon;">"ReturnUrl"</span>].ToString());</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">else</span></p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Response.Redirect(Request.Url.LocalPath);</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;10</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">else</span></p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;11</span>&nbsp;&nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;12</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">if</span> (Request.Url.PathAndQuery.Contains(<span style="color: maroon;">"ReturnUrl"</span>))</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;13</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Response.Redirect(Request.Params[<span style="color: maroon;">"ReturnUrl"</span>].ToString());</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;14</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">else</span></p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;15</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Response.Redirect(Request.Url.PathAndQuery);</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;16</span>&nbsp;&nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;17</span>&nbsp;}</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;18</span>&nbsp;</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;19</span>&nbsp;<span style="color: blue;">protected</span> <span style="color: blue;">void</span> LoginStatus1_LoggedOut(<span style="color: blue;">object</span> sender, <span style="color: teal;">EventArgs</span> e)</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;20</span>&nbsp;{</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;21</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">if</span> (<span style="color: teal;">Helpers</span>.URLRewritten(Request.Url.LocalPath))</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;22</span>&nbsp;&nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;23</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Response.Redirect(Request.Url.LocalPath);</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;24</span>&nbsp;&nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;25</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">else</span></p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;26</span>&nbsp;&nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;27</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Response.Redirect(Request.Url.PathAndQuery);</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;28</span>&nbsp;&nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;29</span>&nbsp;}</p></div></pre>One more thing. To manage the Return URL, you'll have to call the helper function like so<pre class="code"><!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 if\cf0  (\cf10 Helpers\cf0 .URLRewritten(Request.Url.LocalPath))\par ??\{\par ??    Response.Redirect(\cf10 FormsAuthentication\cf0 .LoginUrl +\par ??                  \cf13 "?ReturnUrl="\cf0  + Request.Url.LocalPath);\par ??\}\par ??\cf2 else\par ??\cf0 \{\par ??    Response.Redirect(\cf10 FormsAuthentication\cf0 .LoginUrl +\par ??                   \cf13 "?ReturnUrl="\cf0  + Request.Url.PathAndQuery);\par ??\}}
-->
<div style="background: white none repeat scroll 0% 50%; font-size: 10pt; color: black; font-family: Courier New; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;1</span>&nbsp;<span style="color: blue;">if</span> (<span style="color: teal;">Helpers</span>.URLRewritten(Request.Url.LocalPath))</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;2</span>&nbsp;{</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp; Response.Redirect(<span style="color: teal;">FormsAuthentication</span>.LoginUrl +</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; <span style="color: maroon;">"?ReturnUrl="</span> + Request.Url.LocalPath);</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;5</span>&nbsp;}</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;6</span>&nbsp;<span style="color: blue;">else</span></p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;7</span>&nbsp;{</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp; Response.Redirect(<span style="color: teal;">FormsAuthentication</span>.LoginUrl +</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <span style="color: maroon;">"?ReturnUrl="</span> + Request.Url.PathAndQuery);</p><p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp;10</span>&nbsp;}</p></div></pre>I will be using this workaround until i find a fix. <br><br>]]></description>
         <link><![CDATA[http://www.simplyvinay.com/Post/1/UrlRewriting-Woes.aspx]]></link>
         <pubDate>Tue, 17 Jun 2008 00:00:00 GMT</pubDate>
      </item>
   
         </channel>
      </rss>  
   
