<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.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/"><channel><title>ASP.NET Developer Notes</title><link>http://weblogs.asp.net/ryangaraygay/default.aspx</link><description>Ryan Garaygay's ASP.NET notes online</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>BlogEngine.NET and migration to IIS 7</title><link>http://weblogs.asp.net/ryangaraygay/archive/2009/01/28/blogengine-net-and-migration-to-iis-7.aspx</link><pubDate>Tue, 27 Jan 2009 17:32:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6861714</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6861714</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2009/01/28/blogengine-net-and-migration-to-iis-7.aspx#comments</comments><description>&lt;p&gt;
This blog (and the its parent/main site) is now running on IIS 7
Integrated Mode and would like to share a little of my experience.
&lt;/p&gt;
&lt;p&gt;
There were two major issues with I migrated these blog to IIS 7 [more]
&lt;/p&gt;
&lt;p&gt;
1) Server Error in / Application - Request is not available in this context when I accessed the sites 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; &amp;nbsp; *Of course I had customErrors ON so I had to turn it OFF before I was able to see this detail
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; Interesting, since the site obviously worked fine in IIS 6 and no
changes were made. But after a few google clicks I ran into this
written specifically for the error. &lt;a href="http://mvolo.com/blogs/serverside/archive/2007/11/10/Integrated-mode-Request-is-not-available-in-this-context-in-Application_5F00_Start.aspx" rel="nofollow" mce_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;IIS7 Integrated mode: Request is not available in this context exception in Application_Start&lt;/a&gt; from Mike Volodarsky. Implemented the suggestion and that did it.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; &amp;nbsp; Because of IIS 7 architectural changes the request context is not
available in the Application Start. And since BlogEngine.NET loads
extensions in the Application_Start event and the extension makes
extensive use of the request context in path related code (also
determining protocol et al) the error occured.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; &amp;nbsp; Based on the article 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;i&gt;Basically, if you happen to be accessing the request context in Application_Start, you have two choices:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; 1. Change your application code to not use the request context (recommended).&lt;br&gt;
&amp;nbsp;&amp;nbsp; 2. Move the application to Classic mode (NOT recommended).&lt;/i&gt;" 
&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; I chose option one otherwise I would have stayed with IIS 6. So
what I did is follow his recommended solution and move the Extension
loading part of BlogEngine.NET to the BeginRequest but made provisions
so that it is only loaded on the first request (and once).
&lt;/p&gt;
&lt;p&gt;
Copying from the article: 
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;void&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; Application_BeginRequest(&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(43, 145, 175); font-family: 'Courier New';"&gt;Object&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; source, &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(43, 145, 175); font-family: 'Courier New';"&gt;EventArgs&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; e)&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;{&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpApplication app = (HttpApplication)source;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext context = app.Context;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New';"&gt;// Attempt to peform first request initialization&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(43, 145, 175); font-family: 'Courier New';"&gt;FirstRequestInitialization&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;.Initialize(context);&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;}&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;&lt;br&gt;
class&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(43, 145, 175); font-family: 'Courier New';"&gt;FirstRequestInitialization&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;{&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;private&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;static&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;bool&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; s_InitializedAlready = &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;false&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;private&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;static&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(43, 145, 175); font-family: 'Courier New';"&gt;Object&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; s_lock = &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;new&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(43, 145, 175); font-family: 'Courier New';"&gt;Object&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;();&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New';"&gt;// Initialize only on the first request&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;static&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;void&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; Initialize(HttpContext context)&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;if&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; (s_InitializedAlready)&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;lock&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; (s_lock)&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;if&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt; (s_InitializedAlready)&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New';"&gt;// *** Perform first-request initialization here ... ***&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s_InitializedAlready = &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New';"&gt;true&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;}&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
And that's it for the FIRST issue.
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;2)
Site worked, but hmmm.. the styles are not being applied. Looking at
the code, BlogEngine.NET uses httpHandlers to link to the stylesheets.
accessing the link directly in the browser didn't return anything (not
found) while doing the same on the old hosting account (IIS 6) returned
the style info succesfully. So there must be something wrong with the
handlers and modules.
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
Luckily I found this &lt;a href="http://www.codeplex.com/blogengine/Thread/View.aspx?ThreadId=21124" rel="nofollow" mce_href="http://www.codeplex.com/blogengine/Thread/View.aspx?ThreadId=21124" target="_blank"&gt;IIS 7.0 Integrated Mode Configuration Changes from BE.NET forum&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Go
ahead and read the article, but the bottomline is : in the web.config
move the module and handler configuration sections from the
&amp;lt;system.web&amp;gt; to &amp;lt;system.webserver&amp;gt; and a few minor changes.
Resulting in (assuming you didn't make changes in this section since
you downloaded BlogEngine.NET)
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt; background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&amp;lt;system.webServer&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;modules&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="UrlRewrite" type="BlogEngine.Core.Web.HttpModules.UrlRewrite" preCondition="managedHandler" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="ReferrerModule"
type="BlogEngine.Core.Web.HttpModules.ReferrerModule"
preCondition="managedHandler" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;lt;add name="CompressionModule"
type="BlogEngine.Core.Web.HttpModules.CompressionModule"
preCondition="managedHandler" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add
name="WwwSubDomainModule"
type="BlogEngine.Core.Web.HttpModules.WwwSubDomainModule"
preCondition="managedHandler" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--The CleanPageModule below removes whitespace which makes
the page load faster in IE. Enable at own risk --&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&amp;lt;add name="CleanPageModule"
type="BlogEngine.Core.Web.HttpModules.CleanPageModule,
BlogEngine.Core"/&amp;gt;--&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;       &amp;lt;!--Remove the default ASP.NET modules we don't need--&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;       &amp;lt;remove name="Profile" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;       &amp;lt;remove name="AnonymousIdentification" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;     &amp;lt;/modules&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;     &amp;lt;handlers&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;lt;add name="FileHandler" verb="*" path="file.axd"
type="BlogEngine.Core.Web.HttpHandlers.FileHandler, BlogEngine.Core"
/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="ImageHandler" verb="*" path="image.axd"
type="BlogEngine.Core.Web.HttpHandlers.ImageHandler,
BlogEngine.Core"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="SyndicationHandler" verb="*"
path="syndication.axd"
type="BlogEngine.Core.Web.HttpHandlers.SyndicationHandler,
BlogEngine.Core"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="SiteMap" verb="*" path="sitemap.axd"
type="BlogEngine.Core.Web.HttpHandlers.SiteMap, BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;lt;add name="TrackbackHandler" verb="*" path="trackback.axd"
type="BlogEngine.Core.Web.HttpHandlers.TrackbackHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="PingbackHandler" verb="*"
path="pingback.axd"
type="BlogEngine.Core.Web.HttpHandlers.PingbackHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="OpenSearchHandler" verb="*"
path="opensearch.axd"
type="BlogEngine.Core.Web.HttpHandlers.OpenSearchHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="MetaWeblogHandler" verb="*"
path="metaweblog.axd"
type="BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="RsdHandler" verb="*"
path="rsd.axd" type="BlogEngine.Core.Web.HttpHandlers.RsdHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="CssHandler" verb="*"
path="css.axd" type="BlogEngine.Core.Web.HttpHandlers.CssHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="JavaScriptHandler" verb="*"
path="js.axd" type="BlogEngine.Core.Web.HttpHandlers.JavaScriptHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="RatingHandler" verb="*"
path="rating.axd" type="BlogEngine.Core.Web.HttpHandlers.RatingHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="OpmlHandler" verb="*"
path="opml.axd" type="BlogEngine.Core.Web.HttpHandlers.OpmlHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="MonsterHandler" verb="*"
path="monster.axd"
type="BlogEngine.Core.Web.HttpHandlers.MonsterHandler, BlogEngine.Core"
/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;add name="BlogMLExportHandler" verb="*" path="blogml.axd"
type="BlogEngine.Core.Web.HttpHandlers.BlogMLExportHandler,
BlogEngine.Core" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;     &amp;lt;/handlers&amp;gt;&lt;br&gt;
&amp;lt;/system.webServer&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
And that did it for me :) 
&lt;/p&gt;
&lt;p&gt;FROM : &lt;a href="http://ryangaraygay.com/blog/post/2009/01/blogengine-net-and-migration-to-iis-7.aspx" title="BlogEngine.NET and migration to IIS 7" mce_href="http://ryangaraygay.com/blog/post/2009/01/blogengine-net-and-migration-to-iis-7.aspx"&gt;.NET Developer Notes on BlogEngine.NET and IIS 7 Migration&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6861714" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/iis/default.aspx">iis</category></item><item><title>remove malicious script tags from file </title><link>http://weblogs.asp.net/ryangaraygay/archive/2009/01/26/remove-malicious-script-tags-from-file.aspx</link><pubDate>Sun, 25 Jan 2009 17:05:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6860128</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6860128</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2009/01/26/remove-malicious-script-tags-from-file.aspx#comments</comments><description>&lt;p&gt;Just want to share a "simple" Windows Forms application that I created to &lt;strong&gt;automate removal of malicious SCRIPT tags &lt;/strong&gt;inserted into some web files.&lt;/p&gt;&lt;p&gt;Read full article on &lt;a href="http://ryangaraygay.com/blog/post/2009/01/remove-script-tags-from-file.aspx" mce_href="http://ryangaraygay.com/blog/post/2009/01/remove-script-tags-from-file.aspx"&gt;.NET Developer Notes on remove malicious script tags from file&lt;/a&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6860128" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/security/default.aspx">security</category></item><item><title>WindowsPrincipal.IsInRole doesn't reflect changes until restart</title><link>http://weblogs.asp.net/ryangaraygay/archive/2009/01/26/windowsprincipal-isinrole-doesn-t-reflect-changes-until-restart.aspx</link><pubDate>Sun, 25 Jan 2009 17:04:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6860127</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6860127</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2009/01/26/windowsprincipal-isinrole-doesn-t-reflect-changes-until-restart.aspx#comments</comments><description>&lt;p&gt;Just an observation sometime ago that if you create a new Windows Role
and add a user to it and create a WindowsPrincipal using that user, the
IsInRole method doesn't reflect the membership change made until a
restart is made.&lt;/p&gt;&lt;p&gt;Read the full article from &lt;a href="http://ryangaraygay.com/blog/post/2009/01/windowsprincipalisinrole-doesnt-reflect-changes-until-restart.aspx" mce_href="http://ryangaraygay.com/blog/post/2009/01/windowsprincipalisinrole-doesnt-reflect-changes-until-restart.aspx"&gt;.NET Developer Notes on WindowsPrincipal.IsInRole doesn't reflect changes until restart&lt;/a&gt;&amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6860127" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Address1 vs Address2</title><link>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/address1-vs-address2.aspx</link><pubDate>Sat, 24 Jan 2009 10:35:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6859154</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6859154</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/address1-vs-address2.aspx#comments</comments><description>&lt;p&gt;
I've been working to something related to address validation for some
time I figured I should share this tid bit about the Address1 and
Address2 in forms (especially online forms)
&lt;/p&gt;
&lt;p&gt;
When asked for personal information it is not uncommon to be prompted for the following:
&lt;/p&gt;
&lt;p&gt;
Name, Address1, Address2, City, State, ZIP
&lt;/p&gt;
&lt;p&gt;
What really is the &lt;b&gt;difference between Address1 and Address2&lt;/b&gt; and is it significant? [more]
&lt;/p&gt;
&lt;p&gt;NO, Address2 is not asking for a backup of whatever you put in
Address1. It not like a "confirm" address field. Nor it is simply a
"continuation" of Address1 &lt;/p&gt;
&lt;p&gt;
It depends on the country but generally (e.g. US)
&lt;/p&gt;
&lt;p&gt;
* &lt;b&gt;Address1 &lt;/b&gt;is expected to have Street Number, Street Name, or maybe PO Box. 
&lt;/p&gt;
&lt;p&gt;
* &lt;b&gt;Address2 &lt;/b&gt;is for Apartment, Floor, Suite, Bldg # or more specific information within Address1
&lt;/p&gt;
&lt;p&gt;
And also, if there is no company field Address2 will be a better place to write it on than Address. 
&lt;/p&gt;
&lt;p&gt;
Safe to say that Address1 should be general (but enough to pinpoint a
geographical location - and obviously not include City, State, ZIP,
Country) while other extra information should be in Address2. &lt;/p&gt;
&lt;p&gt;
Address2 fields in forms are generally (and for usability) shorter and
in my opinion should have at least include hints as to what goes to it.
&lt;/p&gt;
&lt;p&gt;
Also, for US ZIP code lookup you might find the following link from USPS helpful : &lt;a href="http://zip4.usps.com/zip4/welcome.jsp" rel="nofollow" mce_href="http://zip4.usps.com/zip4/welcome.jsp" target="_blank"&gt;USPS ZIP Code Lookup&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Hope this info helps.
&lt;/p&gt;&lt;p&gt;FROM: .NET Developer Notes on &lt;a href="http://ryangaraygay.com/blog/post/2009/01/address1-vs-address2.aspx" mce_href="http://ryangaraygay.com/blog/post/2009/01/address1-vs-address2.aspx"&gt;Address1 vs Address2&lt;/a&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6859154" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/General+Software+Development/default.aspx">General Software Development</category></item><item><title>caution in dropping a temp table before creating it</title><link>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/caution-in-dropping-a-temp-table-before-creating-it.aspx</link><pubDate>Sat, 24 Jan 2009 10:34:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6859153</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6859153</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/caution-in-dropping-a-temp-table-before-creating-it.aspx#comments</comments><description>&lt;p&gt;Recently I ran into a script instead a stored procedure&lt;br&gt;
&lt;br&gt;
IF OBJECT_ID(tempdb..#temp1) DROP TABLE #temp1&lt;br&gt;
&lt;br&gt;
Basically, the object of this script is to check if #temp1 (regular temporary table) exists. If so drop it.&lt;br&gt;
However, I think it can have unintended consequences and maybe safer not to include. [more]&lt;br&gt;
&lt;br&gt;
Say you have a script that includes the call to the stored procedure (eg. SampleStoredProc)&lt;br&gt;
If the script (let’s call this “caller”) creates a table #temp1 and at
the top of SampleStoredProc you have if object_id(tempdb..#temp1) drop
table #temp1, what will happen is that the #temp1 table of the “caller”
will be dropped.&lt;br&gt;
And the caller might not want that (or won’t expect that the #temp1
table he/she created will be dropped). It is possible that after
calling SampleStoredProc the caller would still want to use/access
#temp1. &lt;br&gt;
On the other hand if no drop table #temp1 is executed inside
SampleStoredProc and a create table #temp1 is made even if the “caller”
has a #temp1 already it will not be a problem. The #temp1 of the caller
and #temp1 of BehavClusDOM1 will be separately identified.&lt;br&gt;
Since BehavClusDOM1 is a stored procedure it is a scope for temp tables
and safe to assume that at the start of the stored procedure no temp
tables are present in that scope.&lt;br&gt;
Basically the idea is that BehavClus should not touch whatever is beyond its scope.&lt;br&gt;
&lt;br&gt;
So in my opinion the inclusion of this code can cause unexpected
behavior to the caller while removing it poses no risk not to mention
shortening the code and decreasing complexity and readability. The
author of the stored procedure (eg. SampleStoredProc) involving
creation of #temp1 should know when it is present and shouldn't worry
about clashing with another #temp1 in another session. You can
explicitly DROP TABLE #temp1 if you want but only after you have
created your own #temp1 so your sure that you'd be dropping the one you
created and not that in other scripts.
&lt;/p&gt;&lt;p&gt;FROM : &lt;a href="http://ryangaraygay.com/blog/post/2009/01/caution-in-dropping-a-temp-table-before-creating-it.aspx" mce_href="http://ryangaraygay.com/blog/post/2009/01/caution-in-dropping-a-temp-table-before-creating-it.aspx"&gt;.NET Develoer Notes on caution in dropping a temp table before creating it&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6859153" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/sql+server/default.aspx">sql server</category></item><item><title>temp table (#), global temp tables (##) and @table variables</title><link>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/temp-table-global-temp-tables-and-table-variables.aspx</link><pubDate>Sat, 24 Jan 2009 10:33:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6859152</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6859152</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/temp-table-global-temp-tables-and-table-variables.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;
I've been working "full-time" on TSQL scripts for the past month (no
with .NET windows/web apps) and mostly on optimization. And I feel that
I should share with everyone this article about temp tables and table
variables and some of my own notes. Go read the article below then you
may come back here. Take careful note of the Conclusion part at the end
of the article. [more]
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html" rel="nofollow" mce_href="http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html" target="_blank"&gt;Should I use a #temp table or a @table variable?&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Things to generally consider are speed, disk space and cpu
utilization, persistence. And here are some short hopefully helpful
notes. &lt;/p&gt;
&lt;p&gt;
1) persistence - if you need the data to persist even after the execution then no doubt you need to use permanent tables.
&lt;/p&gt;
&lt;p&gt;
2) cpu utilization - always review indexes. effect of the use of
regular temp, global temp tables, table variables to performance is not
as significant as a missing index. Among other things, it is safe to
say, always ensure you have a primary key. and also if you will perform
queries with ORDER BY then always consider your clustered indexes are
correct. you can use estimated or actual execution plans to analyze
your queries. I recommend SQL profiler too but correct me if I'm wrong
but they are only able to profile permanent tables.
&lt;/p&gt;
&lt;p&gt;3) speed - first thing, indexes again too (see above). Secondly and
very important - Although table variables may seem (and actually
common) faster than temp tables, my observation is that if you are
dealing with large datasets then temp tables are way way faster than
table variables. I could not quantify giving the dataset I'm working on
but suffice to say that it took quite a number of folds faster that I
cancelled the execution. &lt;/p&gt;
&lt;p&gt;
4) disk space - temp tables, global temp tables and table variables
take up the same space as permanent tables would. But they should be
cleared once the procedure/function goes out of scope. The tempdb
transaction log is less impacted than with #temp tables;
table variable log activity is truncated immediately, while #temp table
log activity persists until the log hits a checkpoint, is manually
truncated, or when the server restarts&lt;/p&gt;&lt;p&gt;FROM: &lt;a href="http://ryangaraygay.com/blog/post/2009/01/temp-tables-and-table-variables.aspx" mce_href="http://ryangaraygay.com/blog/post/2009/01/temp-tables-and-table-variables.aspx"&gt;.NET Developer Notes on temp table (#), global temp tables (##) and @table variables&lt;/a&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6859152" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/sql+server/default.aspx">sql server</category></item><item><title>Convert Delimited Values to a table with Ordinal Column</title><link>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/convert-delimited-values-to-a-table-with-ordinal-column.aspx</link><pubDate>Sat, 24 Jan 2009 10:32:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6859151</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6859151</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/convert-delimited-values-to-a-table-with-ordinal-column.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;
This is a script to conver a delimited/separated values given a delimiter into a table, via a User Defined Function.&lt;span id="continue"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
This has saved me a lot of work already including just now so I gfigured this is a good share
&lt;/p&gt;
&lt;p&gt;
My apologies as I could not determine where I based this script from
but definitely I got it from someone else rather than created my own.
Had a few revisions along the way.
&lt;/p&gt;&lt;p&gt;

CREATE FUNCTION [dbo].[Split] &lt;br&gt;
( &lt;br&gt;
&amp;nbsp; @String VARCHAR(200), &lt;br&gt;
&amp;nbsp; @Delimiter VARCHAR(5) &lt;br&gt;
) &lt;br&gt;
RETURNS @SplittedValues TABLE &lt;br&gt;
( &lt;br&gt;
&amp;nbsp; Ordinal SMALLINT IDENTITY(1,1) PRIMARY KEY, &lt;br&gt;
&amp;nbsp; SplitValue VARCHAR(MAX) &lt;br&gt;
) &lt;br&gt;
AS &lt;br&gt;
BEGIN &lt;br&gt;
&amp;nbsp; DECLARE @SplitLength INT &lt;br&gt;
&amp;nbsp; WHILE LEN(@String) &amp;gt; 0 &lt;br&gt;
&amp;nbsp; BEGIN &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT @SplitLength = &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CASE CHARINDEX(@Delimiter,@String) &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN 0 THEN LEN(@String) &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE CHARINDEX(@Delimiter,@String) -1 &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END) &lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO @SplittedValues &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT SUBSTRING(@String,1,@SplitLength) &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT @String = &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CASE (LEN(@String) - @SplitLength) &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN 0 THEN '' &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE RIGHT(@String, LEN(@String) - @SplitLength - 1) &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END) &lt;br&gt;
&amp;nbsp; END &lt;br&gt;
&amp;nbsp; RETURN &lt;br&gt;
END&lt;br&gt;
GO&lt;/p&gt;&lt;p&gt;From : &lt;a href="http://ryangaraygay.com/blog/post/2008/11/convert-delimited-values-to-a-table-with-ordinal-column.aspx" mce_href="http://ryangaraygay.com/blog/post/2008/11/convert-delimited-values-to-a-table-with-ordinal-column.aspx"&gt;.NET Developer Notes on Convert Delimited Values to a table with Ordinal Column&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6859151" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/sql+server/default.aspx">sql server</category></item><item><title>Performance, Measure and ANTS Profiler</title><link>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/performance-measure-and-ants-profiler.aspx</link><pubDate>Sat, 24 Jan 2009 10:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6859147</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6859147</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2009/01/24/performance-measure-and-ants-profiler.aspx#comments</comments><description>&lt;p&gt;
Might need to create a separate page for notes on performance since
I've been doing a lot of C# and database tuning lately but having them
on this post so far. Here are some of my notes on performance [more]
&lt;/p&gt;
&lt;p&gt;* Before you optimize, ensure that your results are accurate first
before optimizing. I would suggest Test Driven Development or at least
some unit testing but that's another story. Just make sure your results
are correct first otherwise your optimization is useless. &lt;/p&gt;
&lt;p&gt;
* Before you optimize, always MEASURE MEASURE MEASURE
&lt;/p&gt;
&lt;p&gt;
* If you can measure without introducing extra code, go with it. Aside
from saving time, it will keep your code clean and introduce what could
be unnecessary complexity. And for this very reason I just purchase &lt;a href="http://www.red-gate.com/Products/ants_profiler/index.htm" rel="nofollow" mce_href="http://www.red-gate.com/Products/ants_profiler/index.htm" target="_blank"&gt;ANTS Profiler 4&lt;/a&gt;
from RedGate software. Another alternative is dotNetTrace from
JetBrains and although I love Resharper from the same company I prefer
ANTS profiler. I said prefer because as I haven't explored dotNetTrace
that much, i would say it is really preference, UI/usability and being
able to view the timings embedded in a window which shows the source
code. Also like the call graph, drill down on significant methods in
terms of time spent on it. I got a quote for a no support/update
version of the software when I emailed RedGate about their pricing
which is admittedly very high for a personal purchase when you are
earning from a 3rd world country. So will be receiving fixes but not
major upgrades (so as they say but haven't dug deep - besides the
version looks pretty good and turns out to be very useful for me
already). It really sucks to try to optimize something only to find out
that it is not the bottleneck &lt;/p&gt;
&lt;p&gt;
* If your application involves database access and you're slow then
more often than not your database is not tuned. And SQL Profiler and
Database Tuning Advisor is a very good start. You can apply the
recommendations or you can just evaluate them and make your own
adjustments. In my experience however the recommended changes does make
a lot of performance improvement. You think you know enough about
indexes and database design? You might be surprised how much
performance you can gain from these tools. &lt;/p&gt;
&lt;p&gt;
Again measure, measure, measure but if you can only identify some specific parts then data access seems like a good start. 
&lt;/p&gt;
&lt;p&gt;
* Then look into you application logic. Even if your code is optimized
but your algorithm/logic is wrong, it will still turn out bad
&lt;/p&gt;
&lt;p&gt;* Also know about database/table statistics, indexed views and
partition. If you can take advantage of partitions and involving
considerable data access the improvement is quite impressive. &lt;/p&gt;
&lt;p&gt;
* &amp;lt;string&amp;gt;.SubString(...) does some considerable lifting so if
you want to check if the first two chars in a string is equal to some
other string then you should consider using &amp;lt;string&amp;gt;.StartsWith
instead or avoid the SubString if you can
&lt;/p&gt;
&lt;p&gt;* Hashtable is faster than SortedDictionary, SortedList or List. I
know I should provide stats for this (have a URL somewhere and will
update this soon)
&lt;/p&gt;
&lt;p&gt;* When using nullable types, use &amp;lt;variable&amp;gt;.HasValue as much
as possible than comparing using != null. Or even
"!&amp;lt;var&amp;gt;.HasValue" vs. "== null". But avoid negation if you have
to
&lt;/p&gt;
&lt;p&gt;Finally this list will grow soon hopefully and if feel like you
disagree please feel free to comment and have other benefit from your
thoughts too :)&lt;/p&gt;&lt;p&gt;Taken from : &lt;a href="http://ryangaraygay.com/blog/post/2008/09/performance-notes.aspx" mce_href="http://ryangaraygay.com/blog/post/2008/09/performance-notes.aspx"&gt;.NET Developer Notes on Performance, Measure and ANTS Profiler&lt;/a&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6859147" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/performance/default.aspx">performance</category></item><item><title>Ancestor and Descendant IDs/info list using Common Table Expressions</title><link>http://weblogs.asp.net/ryangaraygay/archive/2008/07/12/ancestor-and-descendant-ids-info-list-using-common-table-expressions.aspx</link><pubDate>Fri, 11 Jul 2008 20:24:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6390077</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6390077</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2008/07/12/ancestor-and-descendant-ids-info-list-using-common-table-expressions.aspx#comments</comments><description>&lt;p&gt;
Needed some TSQL code again to retrieve descendant and ancestor entries
in a self-referencing table. I've done this a couple of times already
and although I can write it from the top of my head, sometimes you just want to
make life easier and have a script you can just modify a bit to fit the
new requirement. &lt;span id="continue"&gt;&lt;/span&gt; 
&lt;/p&gt;
&lt;p&gt;
So what I usually use for recursions in SQL Server 2005 are Common
Table Expressions (the "WITH" keyword). This is only available in SQL
2005 and very easy/efficient for recursive.
&lt;/p&gt;&lt;p&gt;This is definitely in BOL and articles all over nevertheless here's my basic script to get "Descendants and Self"
and "Ancestors and Self" information. In this case I only involved the
ID, ParentID, and Sequence but you may add more columns (ID and
ParentID are required to work). Also you might want to just retrieve
the ID and just perform a JOIN afterwards. &lt;/p&gt;&lt;p&gt;Please read full article from &lt;a href="http://ryangaraygay.com/blog/post/2008/07/get-ancestor-and-descendant-ids-or-info-using-sql-2005-common-table-expressions.aspx" title="Ancestor and Descendant IDs or info using SQL 2005 Common Table Expressions" mce_href="http://ryangaraygay.com/blog/post/2008/07/get-ancestor-and-descendant-ids-or-info-using-sql-2005-common-table-expressions.aspx"&gt;.NET Developer Notes on Ancestor and Descendant IDs/info using Common Table Expressions&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6390077" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/sql+server/default.aspx">sql server</category></item><item><title>Sys.ArgumentException: Value must not be null for Controls and Behaviors</title><link>http://weblogs.asp.net/ryangaraygay/archive/2008/06/25/sys-argumentexception-value-must-not-be-null-for-controls-and-behaviors.aspx</link><pubDate>Tue, 24 Jun 2008 17:01:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6315273</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6315273</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2008/06/25/sys-argumentexception-value-must-not-be-null-for-controls-and-behaviors.aspx#comments</comments><description>&lt;p&gt;
I was going thru some pages for my current project today when I ran into the said error "&lt;strong&gt;Sys.ArgumentException: Value must not be null for Controls and Behaviors&lt;/strong&gt;". It was the first time I've encountered it and since it was working the last time I browsed it I didn't have a clue what was causing it so had to dig around. [more]
&lt;/p&gt;
&lt;p&gt;
I have tested the page though I have to admit that not thoroughly (yeah I know, don't check in not well tested code) and there was no automated UI tests for it, took me sometime to stop the cause. I had to consider what applications I installed on my machine recently or other changes.
&lt;/p&gt;
&lt;p&gt;
After some digging it turns out that it is related to a &lt;strong&gt;modalPopupExtender &lt;/strong&gt;(part of &lt;strong&gt;AJAXControlToolkit&lt;/strong&gt;)&lt;strong&gt; &lt;/strong&gt;in the page. 
&lt;/p&gt;
&lt;p&gt;
Moving on, the extender's &lt;strong&gt;TargetControlID &lt;/strong&gt;was set to let's say "linkAddItem" control.
&lt;/p&gt;
&lt;p&gt;
Now, the catch is that recently I added an inline condition (ok, not really sure what is the right term for this but something like the one below):
&lt;/p&gt;
&lt;p&gt;
&amp;lt;% if(MyCondition) { %&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;asp:LinkButton ID="linkAddItem" (definition here.... plus some other text)&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;% } %&amp;gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
So as you might have guessed, the page was looking for "linkAddItem" but in case MyCondition is true, it would not be rendered thus causing the error. I had read somewhere that if you have the TargetControl's (eg. linkAddItem) Visible attribute equals to "false", the AJAX control toolkit code would be able to detect with no problems. But not this one. The "Valu" mentioned in the error is likely the TargetControlID or at least related to it. You could verify by debugging the client script if this wouldn't solve the problem but fortunately enough not to go that far. 
&lt;/p&gt;
&lt;p&gt;
To cut this short story even shorter, my work-around was to instead have that block wrapped inside a panel (&amp;lt;asp:Panel...) and on Page PreRender, set the Panel.Visible = MyCondition. To simplify you could set just the control (eg. linkAddItem) Visibility but since there are other controls in that block, in my case the panel would be good.
&lt;/p&gt;
&lt;p&gt;
I believe you can also set Visible='&amp;lt;%= MyCondition %&amp;gt;' of the panel in the ASPX page rather than at runtime/code for as long as you have the Page databound. : this.DataBind(); (but be careful, this is recursive and would rebind all other controls in your page you have bound previously).
&lt;/p&gt;
&lt;p&gt;
Next time you run into this error, it is likely that one of the possible suspect is control visibility.&lt;/p&gt;&lt;p&gt;Cross post from &lt;a href="http://ryangaraygay.com/blog/post/2008/06/SysArgumentException-Value-must-not-be-null-for-Controls-and-Behaviors.aspx" title=".NET Developer Notes on SysArgumentException: Value must not be null for Controls and Behaviors" mce_href="http://ryangaraygay.com/blog/post/2008/06/SysArgumentException-Value-must-not-be-null-for-Controls-and-Behaviors.aspx"&gt;.NET Developer Notes&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6315273" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/aspp.net/default.aspx">aspp.net</category><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/atlas/default.aspx">atlas</category><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/ajax/default.aspx">ajax</category></item><item><title>Recent SQL Injection Attacks on ASP sites</title><link>http://weblogs.asp.net/ryangaraygay/archive/2008/05/25/recent-sql-injection-attacks-on-asp-sites.aspx</link><pubDate>Sat, 24 May 2008 16:54:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6218038</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6218038</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2008/05/25/recent-sql-injection-attacks-on-asp-sites.aspx#comments</comments><description>&lt;p&gt;
There seems to be a number of SQL injection attacks happening lately involving adding of &lt;b&gt;&amp;lt;script src=http://www.banner82.org/b.js&amp;gt;&amp;lt;/script&amp;gt;&lt;/b&gt;, &lt;b&gt;adword71.com/b.js&lt;/b&gt;
(and the likes&amp;nbsp;) to entries under string/text/varchar columns in the
database targetting ASP (classic/3.0) sites and SQL Server. Note, they
need not know your table or column names to mess up with you. &lt;/p&gt;&lt;p&gt;

I definitely do not wish to play cops and robbers here but I wish to
contribute a little on this. There are a number of articles on this
(read along) and even more for preventing
SQL injection and other related exploits such as cross-site scripting
so help yourself. &lt;/p&gt;&lt;p&gt;As mentioned this is more targeted to ASP (classic/3.0) sites but posting nevertheless.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Read full article from &lt;a href="http://ryangaraygay.com/blog/post/2008/05/SQL-injection-attacks-banner82-script.aspx" mce_href="http://ryangaraygay.com/blog/post/2008/05/SQL-injection-attacks-banner82-script.aspx"&gt;Security alert : SQL injection attacks - banner82 script&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thanks to &lt;a href="http://weblogs.asp.net/rrobbins/archive/2008/05/23/sql-injection-threat-on-the-rise.aspx" target="_blank" mce_href="http://weblogs.asp.net/rrobbins/archive/2008/05/23/sql-injection-threat-on-the-rise.aspx"&gt;Robert Robbins post on rising SQL injection threats&lt;/a&gt; for making me think of cross posting here in weblogs.asp.net. I agree that this threat could be eliminated better with help/information from the community (if not MSFT itself)&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6218038" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/asp/default.aspx">asp</category><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/security/default.aspx">security</category><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/sql+server/default.aspx">sql server</category></item><item><title>Updating ASP cookie from ASP.NET (vice versa)</title><link>http://weblogs.asp.net/ryangaraygay/archive/2008/05/20/updating-asp-cookie-from-asp-net-vice-versa.aspx</link><pubDate>Tue, 20 May 2008 11:04:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6203814</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6203814</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2008/05/20/updating-asp-cookie-from-asp-net-vice-versa.aspx#comments</comments><description>&lt;p&gt;
You might encounter a case where &lt;strong&gt;updating an ASP (classic/3.0) cookie from ASP.NET code (or vice versa) doesn't work&lt;/strong&gt;. That is despite updating the cookie value, the old value still remains.  
&lt;/p&gt;
&lt;p&gt;
I was working on a having an ASP page communicate some information to
an ASP.NET (2.0) page and vice versa and since the information was not
that critical/confidential a cookie would do (** for
critical information, it is usually done using a common
datastore/database or session though that not secure. will not discuss
here for now). I expect it to be seamless since they're accessing the
same set of cookies after all. However to my surprise it was acting
weird.
&lt;/p&gt;
&lt;p&gt;After a review of some code and I was certain that each of them
updates the cookie correctly, it was time to bring up fiddler (or any
cookie viewer) and it's when I started getting more clues.&lt;/p&gt;&lt;p&gt;Turns out that the case is actually not "not being updated" but rather a new cookie is created with the same key because of differences in handling cookie paths which must be the same across ASP and ASP.NET for them to talk about the same cookie (using the same name).&lt;/p&gt;&lt;p&gt;Read full article in the following link : &lt;a href="http://ryangaraygay.com/blog/post/2008/05/Updating-ASP-cookie-from-ASPNET-vice-versa.aspx" mce_href="http://ryangaraygay.com/blog/post/2008/05/Updating-ASP-cookie-from-ASPNET-vice-versa.aspx"&gt;Updating ASP cookie from ASP.NET (vice versa)&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6203814" width="1" height="1"&gt;</description></item><item><title>Button doesn't postback after clicking Back Button in Firefox</title><link>http://weblogs.asp.net/ryangaraygay/archive/2008/05/10/button-doesn-t-postback-after-clicking-back-button-in-firefox.aspx</link><pubDate>Fri, 09 May 2008 18:20:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6174215</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6174215</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2008/05/10/button-doesn-t-postback-after-clicking-back-button-in-firefox.aspx#comments</comments><description>&lt;p&gt;
I ran into this behavior (which I think is weird) where a button no longer posts back to ther server after I click on a the Firefox's back button.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
I'm not sure if I'm missing some incorrect settings whatsoever but it works on IE7.&amp;nbsp; I'm hoping someone who runs into this might verify or some thoughts on why is behaves that way. Using Firefox 2.0.0.14, ASP.NET 2.0
&lt;/p&gt;
&lt;p&gt;
Here is my code
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;ASPX &lt;/strong&gt;(sorry no formatting but it's just a simple page with an ASP button)&lt;strong&gt;&lt;br&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%@ Page AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Language="C#" %&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br&gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br&gt;
&amp;lt;head id="Head1" runat="server"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;&lt;br&gt;
&amp;lt;/head&amp;gt;&lt;br&gt;
&amp;lt;body&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" UseSubmitBehavior="false" /&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br&gt;
&amp;lt;/body&amp;gt;&lt;br&gt;
&amp;lt;/html&amp;gt;&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Code behind&lt;/strong&gt;
&lt;/p&gt;
&lt;div style="border: 1px dotted rgb(204, 204, 204); padding: 5px; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: Verdana;"&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Web.UI;
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;partial&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;_Default&lt;/span&gt; : &lt;span style="color: rgb(43, 145, 175);"&gt;Page&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;{
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: rgb(43, 145, 175);"&gt;EventArgs&lt;/span&gt; e)
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//if (Request.Browser.MSDomVersion.Major == 0) // Non IE Browser? &lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Cache.SetNoStore(); // No client side cashing&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Button1_Click(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: rgb(43, 145, 175);"&gt;EventArgs&lt;/span&gt; e)
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&lt;span style="color: rgb(43, 145, 175);"&gt;Guid&lt;/span&gt;.NewGuid());
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;}
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
1. Load the page 
&lt;/p&gt;
&lt;p&gt;
2. Click on the button. Click event handler in server side runs and a GUID is displayed after page reloads
&lt;/p&gt;
&lt;p&gt;
3. Click Back button. As far as my machine/browser behaves, no postback happens.
&lt;/p&gt;
&lt;p&gt;
On the other hand, if using IE (7), step 3 still causes a postback.
&lt;/p&gt;
&lt;p&gt;
It does seem that it has something to do with client side caching since if you uncomment the code in Page_Load, step 3 causes a postback. The only difference with IE though is that if say you have a textbox in the same page, you place some text in the textbox and you click the back button since no client side caching is made, you loose the contents of the textbox.
&lt;/p&gt;
&lt;p&gt;
Installed FireBug to get some hint but for some reason it caused some intermittent behavior. Sometimes it works (posts back) sometimes it doesn't. Not sure though if it's FireBug causing the intermittent behavior but the "no postback behavior" predates the FireBug installation. 
&lt;/p&gt;
&lt;p&gt;
Haven't got the chance to dig deeper into this yet. Gotta get back to work :) I hope I'm just not missing something obvious here...
&lt;/p&gt;
&lt;p&gt;
Resources:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://erikmich.terapad.com/index.cfm?fa=contentNews.newsDetails&amp;amp;newsID=50003&amp;amp;from=list" rel="nofollow" mce_href="http://erikmich.terapad.com/index.cfm?fa=contentNews.newsDetails&amp;amp;newsID=50003&amp;amp;from=list" target="_blank"&gt;Prevent client caching in browsers other that Internet Explorer&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.west-wind.com/WebLog/posts/77157.aspx" rel="nofollow" mce_href="http://www.west-wind.com/WebLog/posts/77157.aspx" target="_blank"&gt;__doPostBack and the Back Button by Rick Strahl&lt;/a&gt; - some possibly relevant information but not quite since in his case, the button click and checkbox check changed event both fire in the server side, in my case the page doesn't postback at all.&lt;a href="http://www.west-wind.com/WebLog/posts/77157.aspx" rel="nofollow" mce_href="http://www.west-wind.com/WebLog/posts/77157.aspx" target="_blank"&gt;&lt;br&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6174215" width="1" height="1"&gt;</description></item><item><title>Page ViewState, Control ViewState and ControlState</title><link>http://weblogs.asp.net/ryangaraygay/archive/2008/05/08/page-viewstate-control-viewstate-and-controlstate.aspx</link><pubDate>Thu, 08 May 2008 05:49:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6168303</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6168303</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2008/05/08/page-viewstate-control-viewstate-and-controlstate.aspx#comments</comments><description>&lt;p&gt;
Just a quick note. I was working on some Web User Control and needed to
persist information across postbacks and thought of using ViewState.
But while I was working on it, I realized that I was using the same key
for saving another information in the parent Page's (the Page
containing the user control) ViewState.
&lt;/p&gt;
&lt;p&gt;I did a little verification and it turns out that despite having the
same key being used for saving different values to ViewState, having it
assigned inside the Web User Conrol and inside the Page results to two
different ViewState items. I verified by assigning ViewState to
the Page's and the User Control's Page_Load event handler, then since
the user control's page load fires later than the two, placed a
breakpoint after it, checked the ViewState (while inside the User
Control code) and it returned the value assigned inside it, while
calling Page.ViewState and the same key, it retrieved the value that
was previously assigned from the Page_Load of the parent Page.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;This is the behavior as far as my little test has shown but feel
free to verify in your machine and let us know how it goes especially
if the behavior is different from above. Haven't come across an explanation yet but will update this as soon as I can or maybe could stumble upon and comment. :) Nevertheless just FYI.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
This is not to be confused with Control State which is discussed more clearly from the links below:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pluralsight.com/blogs/fritz/archive/2004/07/01/472.aspx" id="viewpost.ascx_TitleUrl" rel="nofollow" mce_href="http://pluralsight.com/blogs/fritz/archive/2004/07/01/472.aspx" target="_blank"&gt;Control state in ASP.NET 2.0 by Fritz Onion (PluralSight)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/1whwt1k7.aspx" rel="nofollow" mce_href="http://msdn.microsoft.com/en-us/library/1whwt1k7.aspx" target="_blank"&gt;Control State vs. View State Example on MSDN&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.beansoftware.com/ASP.NET-Tutorials/ControlState-Property.aspx" rel="nofollow" mce_href="http://www.beansoftware.com/ASP.NET-Tutorials/ControlState-Property.aspx" target="_blank"&gt;ControlState Property Demystified&amp;nbsp;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Cross post from : &lt;a href="http://ryangaraygay.com/blog/post/2008/05/Page-ViewState-Control-ViewState-and-ControlState.aspx" mce_href="http://ryangaraygay.com/blog/post/2008/05/Page-ViewState-Control-ViewState-and-ControlState.aspx"&gt;.NET Developer Notes on Page ViewState, Control ViewState and ControlState&lt;/a&gt;&lt;br&gt;

&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6168303" width="1" height="1"&gt;</description></item><item><title>Control Visibility, ViewState and Security and Performance</title><link>http://weblogs.asp.net/ryangaraygay/archive/2008/04/29/control-visibility-viewstate-and-security-and-performance.aspx</link><pubDate>Tue, 29 Apr 2008 11:25:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6140648</guid><dc:creator>ryangaraygay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/ryangaraygay/rsscomments.aspx?PostID=6140648</wfw:commentRss><comments>http://weblogs.asp.net/ryangaraygay/archive/2008/04/29/control-visibility-viewstate-and-security-and-performance.aspx#comments</comments><description>&lt;p&gt;
It is not unheard of to come across a solution where use of asp:Placeholder and asp:Panel (or some other container) Visibility is employed to show/hide certain details from the user especially when when implementing "simple" Authorization/Permission features ("simple" since there are likely more complicated and/or better ways to handle it) Of course you could always implement declarative authorization features in ASP.NET but I believe it would cause the user to be redirected to the page identified as the login url and might not be applicable if you want to stay on the same page.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;
So if you simply perform checks in code you might have the following approach: Does User.Indentity.Name have permission to view this page? Yes/No? If yes, display contents of panel/placeholder, if no set their visibility to false.
&lt;/p&gt;
&lt;p&gt;
Simple and might do the trick.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;BUT&lt;/b&gt; never forget that although they are invisible, some values might be present in the viewstate (eg. values bound to gridview inside the panel/placeholder). Although viewstate might look cryptic, remember that it is just base 64 encoded string. And although you could have employ encrypted ViewState, it would still be not a good idea and you will have unnecessary overhead.
&lt;/p&gt;
&lt;p&gt;
So just a quick note to self (and possibly others) that settings PlaceHolder/Panel visibility to false doesn't stop it from saving information in viewstate. Obvious to some but not to all so if you're guilty, better fix that code before someone gets to see something they shouldn't.
&lt;/p&gt;
&lt;p&gt;
I'm also interested how best to implement this in code (not using ASP.NET built-in declarative authorization rules - ie. in web.config). HttpModule maybe? But note that I would want the resulting page to have the same look and feel (still use master page) rather than simply a text in the page (and nothing more) or worst an exception throw because user doesn't have view permission for example, nor redirected to a generic page. I'll try to explore this but someone who might have a good idea out there comes across this and shares his/her notes.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;UPDATE:&lt;/b&gt; I just realized that aside from the security consideration in this case disabling viewstate when not need would improve performance significantly (depending on how items you have in your page makes use of viewstate - eg. disabling view state when hiding a gridview is significant) so adding Performance to the title as well.&lt;/p&gt;&lt;p&gt;Also, be cautious about disabling view state. It is used by control to persist information across postbacks so if you do disable them make sure you test your page well.&lt;/p&gt;&lt;p&gt;* Cross post from &lt;a href="http://ryangaraygay.com/blog/post/2008/04/PlaceHolder-and-Panel-Visibility-and-ViewState.aspx" mce_href="http://ryangaraygay.com/blog/post/2008/04/PlaceHolder-and-Panel-Visibility-and-ViewState.aspx"&gt;.NET Developer Notes on Control Visibility, ViewState and Security and Performance&lt;br&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6140648" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/ryangaraygay/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item></channel></rss>