<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>ToDotNet</title><link>http://todotnet.com/</link><description>Convert.ToDotNet(InstanceOfWorld)</description><managingEditor>Sander Gerz</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Sander Gerz</dc:creator><title>"Welcome to the MCT Program"</title><link>http://todotnet.com/archive/2008/04/30/11354.aspx</link><pubDate>Wed, 30 Apr 2008 08:10:00 GMT</pubDate><guid>http://todotnet.com/archive/2008/04/30/11354.aspx</guid><wfw:comment>http://todotnet.com/comments/11354.aspx</wfw:comment><comments>http://todotnet.com/archive/2008/04/30/11354.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11354.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11354.aspx</trackback:ping><description>&lt;P&gt;&amp;#8220;Congratulations! On behalf of Microsoft, we are happy to welcome you to the Microsoft Certified Trainer (MCT) Program. You will be sent a Microsoft Certified Trainer Welcome Kit within four to six weeks.&amp;#8221;&lt;/P&gt;
&lt;P&gt;Yes, that's the e-mail I received this morning. &lt;/P&gt;
&lt;P&gt;As part of my personal improvement plan, I decided to go for the MCT certification. There are several ways to achieve this, but basically you need to have a &lt;A href="http://www.microsoft.com/learning/mcp/mct/guide/one.mspx"&gt;major Microsoft certification, such as one or more&amp;nbsp;of these&lt;/A&gt;. Step two is to demonstrate &lt;A href="http://www.microsoft.com/Learning/mcp/mct/guide/two.mspx"&gt;instructional skills, like this&lt;/A&gt;. In my case, I chose option 2: Attend and pass a presentation skills course. The course I took was &lt;A href="http://www.niqueconsultancy.nl/index.php?id=5"&gt;this one&lt;/A&gt;, by Monique Kerssens (in Dutch). Monique is a very experienced trainer herself, provides good feedback on your strengths and weaknesses. I really learned a lot from her. &lt;/P&gt;
&lt;P&gt;I was&amp;nbsp;a guest lecturer for strategic analysis (basically just statistical analysis) for about 4 years, but I'm not doing that anymore. But there&amp;nbsp;the urge to teach was still present. Perhaps it's family related, as my mother was a teacher for 13 years.&amp;nbsp;Anyway, according to my transcript, I'm allowed to teach over 80 different courses. I'm looking forward to teaching any of these. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11354.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>TFS source control and a bit of usability, or is it just me</title><link>http://todotnet.com/archive/2008/04/23/11352.aspx</link><pubDate>Wed, 23 Apr 2008 12:44:00 GMT</pubDate><guid>http://todotnet.com/archive/2008/04/23/11352.aspx</guid><wfw:comment>http://todotnet.com/comments/11352.aspx</wfw:comment><comments>http://todotnet.com/archive/2008/04/23/11352.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11352.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11352.aspx</trackback:ping><description>&lt;P&gt;It's something very trivial, but earlier today, I accidentilly closed the folders view in my source control explorer. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="/images/16/r_tfs-folders.jpg"&gt;&lt;/P&gt;
&lt;P&gt;How to get them back? Would you consider this?&lt;/P&gt;
&lt;P&gt;&lt;IMG src="/images/16/r_tfs-folders-open.jpg"&gt;&lt;/P&gt;
&lt;P&gt;I didn't at first. But then again, it may be just me.&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11352.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Windows 2008 released! </title><link>http://todotnet.com/archive/2008/02/04/11349.aspx</link><pubDate>Mon, 04 Feb 2008 16:00:00 GMT</pubDate><guid>http://todotnet.com/archive/2008/02/04/11349.aspx</guid><wfw:comment>http://todotnet.com/comments/11349.aspx</wfw:comment><comments>http://todotnet.com/archive/2008/02/04/11349.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11349.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11349.aspx</trackback:ping><description>&lt;P&gt;Upon checking rumors&lt;A href="http://webwereld.nl/articles/49729/microsoft-geeft-vista-sp1-vrij.html"&gt; &lt;/A&gt;that SP1 for Vista was released today, I stumbled upon something else.&lt;/P&gt;&lt;IMG alt="Windows Server 2008 on MSDN" src="http://www.devtips.net/UserFiles/windows2008-available.jpg"&gt; 
&lt;P&gt;That's right. Windows Server 2008 is available for download from the MSDN website! Check the date.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11349.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Visual Studio 2008 released soon?</title><link>http://todotnet.com/archive/2007/11/17/11347.aspx</link><pubDate>Sat, 17 Nov 2007 20:43:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/11/17/11347.aspx</guid><wfw:comment>http://todotnet.com/comments/11347.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/11/17/11347.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11347.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11347.aspx</trackback:ping><description>&lt;P&gt;According to the &lt;A href="http://blogs.msdn.com/msdnsubscriptions/archive/2007/11/16/look-for-visual-studio-2008-downloads-on-top-subscriber-downloads-early-next-week.aspx"&gt;MSDN Subscriptions WebLog&lt;/A&gt; we can expect to see Visual Studio 2008 to be downloadable early next week. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;#8220;Visual Studio 2008 is anticipated out early next week, with availability for Subscribers. Check out the "Top Subscriber Downloads" area on &lt;/EM&gt;&lt;A href="http://msdn2.microsoft.com/subscriptions" minmax_bound="true"&gt;&lt;EM&gt;http://msdn2.microsoft.com/subscriptions&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; for VS 2008 downloads.&lt;/EM&gt;&lt;/P&gt;
&lt;P minmax_bound="true"&gt;&lt;EM&gt;You will also be able to access these downloads by clicking on the Subscriber Downloads and&amp;nbsp;Product Keys links&amp;nbsp;that take you to all of your downloads. &amp;#8221;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;EM&gt;(source: &lt;/EM&gt;&lt;/FONT&gt;&lt;A href="http://weblogs.asp.net/kencox/archive/2007/11/17/visual-studio-2008-early-next-week.aspx"&gt;&lt;FONT size=2&gt;&lt;EM&gt;Ken Cox&lt;/EM&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;EM&gt;)&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;That would be great and just in time for a session I'm doing Friday on 'what's new in Visual Studio 2008'. More details on that here: &lt;A href="http://www.newhorizonslearning.nl/New-Horizon-s-Developers-day.554.0.html"&gt;http://www.newhorizonslearning.nl/New-Horizon-s-Developers-day.554.0.html&lt;/A&gt;&amp;nbsp;(it's Dutch).&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;EM&gt;update: RTM has been reached and VSTS 2008 can be downloaded (&lt;A href="http://weblogs.asp.net/fbouma/archive/2007/11/19/visual-studio-team-system-2008-team-suite-rtm-now-available-on-msdn-subscribers.aspx"&gt;source&lt;/A&gt;).&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11347.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Attending TechEd Developers 2007 in Barcelona</title><link>http://todotnet.com/archive/2007/11/06/11346.aspx</link><pubDate>Tue, 06 Nov 2007 09:51:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/11/06/11346.aspx</guid><wfw:comment>http://todotnet.com/comments/11346.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/11/06/11346.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11346.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11346.aspx</trackback:ping><description>&lt;P&gt;If you're attending the TechEd Developers conference in Barcelona this year, you are like me. I arrived yesterday and missed &lt;A href="http://blogs.msdn.com/somasegar/archive/2007/11/05/teched-developer-in-europe.aspx"&gt;the keynote speech&lt;/A&gt;. Biggest news for most, but &lt;A href="http://www.microsoftregionaldirectors.com/"&gt;not everyone&lt;/A&gt;, is that Visual Studio 2008 will be available end of this month. Now, some may wonder about the initial announcement that Microsoft made about the launch of the new version on February 27th 2008. It's simply a matter of marketing. Creating a buzz around three major products - Visual Studio 2008, SQL Server 2008 and Windows Server 2008,&amp;nbsp;on a single date is more effective than releasing the bits bit by bit. Even though the other products may not even be available end of February. &lt;/P&gt;
&lt;P&gt;At least one product will be, and from a developer's perspective, it's the most important product :-)&lt;/P&gt;
&lt;P&gt;An overview of the new features can be found &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=17319EB4-299C-43B8-A360-A1C2BD6A421B&amp;amp;displaylang=en"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Anyway, if you're at TechEd, stop by&amp;nbsp;in the ask-the-experts area at the&amp;nbsp;Windows Vista booth for a chat. &lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11346.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Faster websites using a Content Delivery Network</title><link>http://todotnet.com/archive/2007/10/01/11335.aspx</link><pubDate>Mon, 01 Oct 2007 20:42:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/10/01/11335.aspx</guid><wfw:comment>http://todotnet.com/comments/11335.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/10/01/11335.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11335.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11335.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://msmvps.com/blogs/omar/default.aspx" target=_blank&gt;Omar AL Zabir&lt;/A&gt; writes about how to use a Content Delivery Network (CDN). This is one of the 13 rules Yahoo suggests for making your web pages faster (&lt;A title="2: Use a Content Delivery Network" href="http://developer.yahoo.com/performance/rules.html#cdn" target=_blank&gt;2 - Use a Content Delivery Network&lt;/A&gt;). &lt;/P&gt;
&lt;P&gt;It's been a while since I've made a &lt;A href="http://www.megarouter.com/Default.aspx"&gt;CDN&lt;/A&gt;, but lack of time prevented me to&amp;nbsp;do much work on&amp;nbsp;it. It's working fine though, check &lt;A href="http://channel9.www1.uricache.com/"&gt;http://channel9.www1.uricache.com/&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;If you want to try it out&amp;nbsp; &lt;A href="http://todotnet.com/contact.aspx"&gt;contact me through my weblog&lt;/A&gt;. &lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11335.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Migrate ClearCase to TFS: update</title><link>http://todotnet.com/archive/2007/09/16/11334.aspx</link><pubDate>Sun, 16 Sep 2007 17:49:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/09/16/11334.aspx</guid><wfw:comment>http://todotnet.com/comments/11334.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/09/16/11334.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11334.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11334.aspx</trackback:ping><description>&lt;P&gt;Recently, I started a on a new project as a development coordinator. One of the tasks we face is a migration from Rational ClearCase to Team Foundation Server.&amp;nbsp;A &lt;A href="http://blogs.msdn.com/tfs_migration/archive/2007/09/13/migrating-clearcase-branches-to-tfs.aspx"&gt;tool&lt;/A&gt; that should help in doing this has just been released. What a coincidence!&lt;/P&gt;
&lt;DIV class=downloadInfo&gt;&lt;A name=Description&gt;&lt;/A&gt;&lt;SPAN&gt;The &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=999220ED-3D11-411A-BB54-71DDDB724E15&amp;amp;displaylang=en"&gt;Team Foundation Server Migration Tool for Rational&amp;#174; ClearCase&amp;#174;&lt;/A&gt; is a tool to help automate the migration process from Rational&amp;#174; ClearCase&amp;#174; to Team Foundation Server. This tool is available as a free download for Team Foundation Server users. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=downloadInfo&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=downloadInfo&gt;&lt;SPAN&gt;&lt;A href="http://blogs.msdn.com/briankel/archive/2007/09/15/clearcase-to-team-foundation-server-migrationt-tool.aspx"&gt;Brian Keller also points&lt;/A&gt; to other &lt;A href="http://msdn2.microsoft.com/en-us/teamsystem/bb840033.aspx"&gt;useful resources&lt;/A&gt;&amp;nbsp;as well as a blog post on &lt;A href="http://blogs.msdn.com/tfs_migration/archive/2007/09/13/migrating-clearcase-branches-to-tfs.aspx"&gt;migrating from ClearCase to TFS&lt;/A&gt;. Just what we need. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=downloadInfo&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=downloadInfo&gt;&lt;SPAN&gt;&lt;EM&gt;update:&lt;/EM&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=downloadInfo&gt;&lt;SPAN&gt;&lt;EM&gt;Actually, we cannot use the tool. It appears it &lt;/EM&gt;&lt;A href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243916&amp;amp;SiteID=1"&gt;&lt;EM&gt;only works with ClearCase&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;, and we're using ClearCase LT. The differences can be found &lt;/EM&gt;&lt;A href="http://www.agsrhichome.bnl.gov/Controls/doc/ClearCaseEnv/2003.06/ccase/doc/all/cc_intro/overview4.htm"&gt;&lt;EM&gt;here&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;. Bummer.&lt;/EM&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;img src ="http://todotnet.com/aggbug/11334.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Windows CardSpace Logo announced</title><link>http://todotnet.com/archive/2007/06/25/11315.aspx</link><pubDate>Mon, 25 Jun 2007 21:02:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/06/25/11315.aspx</guid><wfw:comment>http://todotnet.com/comments/11315.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/06/25/11315.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11315.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11315.aspx</trackback:ping><description>&lt;P&gt;Microsoft has &lt;A href="http://blogs.msdn.com/richardt/archive/2007/06/25/announcing-the-information-card-logo.aspx"&gt;officially announced&lt;/A&gt; the logo for Information Card. The reason for having a logo is that it creates recognition. People will immediately see that a website support logon with an Information Card. This is what it looks like:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.devtips.net/images/infocard_300x210.png"&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ce99e033-39a8-4bc5-9014-60ed0b560d0e&amp;amp;displaylang=en"&gt;You&amp;nbsp;can download the logo package here&lt;/A&gt;. Obviously, the logo comes in different sizes. I've already updated the &lt;A href="https://www.devtips.net/login.aspx?ReturnUrl=%2fCardspaceTokenHandler.aspx"&gt;login for my website&lt;/A&gt;, but I hope the little twist is ok with the guidelines. If you want to watch a webcast on &lt;A href="http://blogs.msdn.com/publicsector/archive/2007/06/25/patterns-for-supporting-information-cards-on-web-sites.aspx"&gt;Windows Cardspace, there's one on June 29th&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11315.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Creating a simple captcha </title><link>http://todotnet.com/archive/2007/06/08/11313.aspx</link><pubDate>Fri, 08 Jun 2007 09:01:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/06/08/11313.aspx</guid><wfw:comment>http://todotnet.com/comments/11313.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/06/08/11313.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11313.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11313.aspx</trackback:ping><description>&lt;P&gt;The new &lt;A href="http://todotnet.com/archive/2007/04/10/11299.aspx"&gt;DevTips.NET website&lt;/A&gt; allows for people to comment on most content, unlike the old site. Obviously this opened up possibilities to add comment spam on all the places. There is a common technique to counter this, called &lt;A href="http://en.wikipedia.org/wiki/Captcha"&gt;CAPTCHA&lt;/A&gt; or &amp;#8220;Completely Automated Public Turing test to tell Computers and Humans Apart&amp;#8221;. There is also an &lt;A href="http://blogs.clearscreen.com/migs/archive/2005/02/01/905.aspx"&gt;easy ASP.NET control&lt;/A&gt; that you can implement on a website to implement this captcha from &lt;A href="http://blogs.clearscreen.com/migs"&gt;Miguel Jimenez&lt;/A&gt;. I use it on this blog. For some reason though, the captcha-image didn't display on the new site. Several options are available: figure out what's wrong, look for another control or... build one myself. Thinking that it shouldn't be too hard, and being a developer, I obviously chose the last option. So here goes:&lt;/P&gt;
&lt;P&gt;First, we need an image to display. I chose to use an HttpHandler for this. Seemed like a good choice, since we only need to Response.Write an image, and store the generated code somewhere. &lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Consolas"&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;lt;%@ WebHandler Language=&lt;SPAN style="COLOR: #a31515"&gt;"C#"&lt;/SPAN&gt; Class=&lt;SPAN style="COLOR: #a31515"&gt;"HipHandler"&lt;/SPAN&gt; %&amp;gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Drawing;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Drawing.Imaging;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Drawing.Drawing2D;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Drawing.Text;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;HipHandler&lt;/SPAN&gt; : &lt;SPAN style="COLOR: #2b91af"&gt;IHttpHandler&lt;/SPAN&gt; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; ProcessRequest (&lt;SPAN style="COLOR: #2b91af"&gt;HttpContext&lt;/SPAN&gt; context) {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.Response.ContentType = &lt;SPAN style="COLOR: #a31515"&gt;"image/jpeg"&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SendImage(context);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; SendImage(&lt;SPAN style="COLOR: #2b91af"&gt;HttpContext&lt;/SPAN&gt; context)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; fontSize = 24;&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;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; width = 100;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; height = 30;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Setup the rectangle to draw the text on&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RectangleF rectF = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; RectangleF(0, 0, width, height);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Bitmap pic = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Bitmap(width, height);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Graphics g = Graphics.FromImage(pic);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; g.SmoothingMode = SmoothingMode.AntiAlias;&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;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SolidBrush fgBrush = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; SolidBrush(Color.RoyalBlue);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SolidBrush bgBrush = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; SolidBrush(Color.SkyBlue);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; g.FillRectangle(bgBrush, rectF);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Choose the font and style&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FontStyle style = FontStyle.Regular;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Font font = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Font(&lt;SPAN style="COLOR: #a31515"&gt;"Arial"&lt;/SPAN&gt;, fontSize, style, GraphicsUnit.Pixel);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Make sure the text is centered&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StringFormat format = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; StringFormat();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; format.Alignment = StringAlignment.Center;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Draw horizontal and vertical lines to make is less computer-readable&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Pen p = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Pen(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; SolidBrush(Color.SteelBlue), 1);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; i = 0; i &amp;lt; height; i=i+7)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; g.DrawLine(p, 0, i, width, i);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; i = 0; i &amp;lt; width; i=i+10)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; g.DrawLine(p, i, 0, i, height);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Get 4 random characters, no weird ones&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; randomText = GenerateRandomText(4, &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.Cryptography.&lt;SPAN style="COLOR: #2b91af"&gt;SHA256Managed&lt;/SPAN&gt; hashAlg = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; System.Security.Cryptography.&lt;SPAN style="COLOR: #2b91af"&gt;SHA256Managed&lt;/SPAN&gt;();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Hash the text so it can be verified after postback&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; hashText = &lt;SPAN style="COLOR: #2b91af"&gt;HttpUtility&lt;/SPAN&gt;.UrlEncode(hashAlg.ComputeHash(System.Text.&lt;SPAN style="COLOR: #2b91af"&gt;Encoding&lt;/SPAN&gt;.Default.GetBytes(randomText)));&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.Response.AppendCookie(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;HttpCookie&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"HipHash"&lt;/SPAN&gt;, hashText));&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Write the text and send it to the browser&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; g.DrawString(randomText, font, fgBrush, rectF, format);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pic.Save(context.Response.OutputStream, ImageFormat.Jpeg);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; GenerateRandomText(&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; maxlength, &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; ultraStrong)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt;[] ultraChars = &lt;SPAN style="COLOR: #a31515"&gt;"!@#$%^&amp;amp;*~|=?{}[]qwertyuiopasdfghjklzxcvbnm1234567890!@#$%^&amp;amp;*~|=?{}[]"&lt;/SPAN&gt;.ToCharArray();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt;[] normalChars = &lt;SPAN style="COLOR: #a31515"&gt;"qwertyuiopasdfghjklzxcvbnm1234567890"&lt;/SPAN&gt;.ToCharArray();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; password = &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;.Empty;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; i = 0; i &amp;lt; maxlength; i++)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt; n = &lt;SPAN style="COLOR: #a31515"&gt;' '&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (ultraStrong) n = ultraChars[GetRandomNumber(ultraChars.Length - 1)];&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (!ultraStrong) n = normalChars[GetRandomNumber(normalChars.Length - 1)];&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (i % 2 == 0)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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; password += n.ToString().ToUpper();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;else&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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; password += n;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; password;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; GetRandomNumber(&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; maxvalue)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.Cryptography.&lt;SPAN style="COLOR: #2b91af"&gt;RandomNumberGenerator&lt;/SPAN&gt; random =&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.Cryptography.&lt;SPAN style="COLOR: #2b91af"&gt;RandomNumberGenerator&lt;/SPAN&gt;.Create();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;byte&lt;/SPAN&gt;[] r = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;byte&lt;/SPAN&gt;[1];&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; random.GetBytes(r);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt; val = (&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt;)r[0] / &lt;SPAN style="COLOR: blue"&gt;byte&lt;/SPAN&gt;.MaxValue;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; i = (&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;)&lt;SPAN style="COLOR: #2b91af"&gt;Math&lt;/SPAN&gt;.Round(val * maxvalue, 0);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; i;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; IsReusable {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;}&lt;/P&gt;&lt;/DIV&gt;&lt;!--EndFragment--&gt;
&lt;P&gt;I'm reusing a method to generate random texts. It was originally intended to create random passwords, hence the variable names in the implementation of the method &lt;FONT face="Courier New"&gt;GenerateRandomText()&lt;/FONT&gt;. The randomly chosen four characters are displayed in the image and also stored in a cookie. No, not directly of course. The text is hashed making it impossible to read before it's stored in the cookie. Other storages, like session or response headers are unavailable or unusable in an HttpHandler.&amp;nbsp;Using a session to store a code &lt;A href="http://www.puremango.co.uk/cm_breaking_captcha_115.php"&gt;is bad practice anyway&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;The second part is a Web User Control that displays the image and asks the user to enter the displayed code.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; FONT-FAMILY: Consolas; mso-highlight: yellow; mso-no-proof: yes"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;@&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: #a31515"&gt;Control&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;Language&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="C#"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;AutoEventWireup&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="true"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;CodeFile&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="UserControlHip.ascx.cs"&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Inherits&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="UserControlHip"&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;img&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: red"&gt;src&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="HipHandler.ashx"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;alt&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="HIP"&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;Enter the code: &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: red"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="TextBoxHip"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;Width&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="100"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;Label&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: red"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="LabelCodeStatus"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;Text&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=""&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;Obviously you can modify the html of this user control to fit your needs and style. The code-behind is a bit more elaborate.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Consolas"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Data;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Configuration;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Collections;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web.Security;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&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: blue"&gt;using&lt;/SPAN&gt; System.Web.UI.WebControls;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web.UI.WebControls.WebParts;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web.UI.HtmlControls;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&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: #2b91af"&gt;UserControlHip&lt;/SPAN&gt; : System.Web.UI.&lt;SPAN style="COLOR: #2b91af"&gt;UserControl&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;{&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; m_controlToVerify;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; ControlToVerify&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; { &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; m_controlToVerify; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt; { m_controlToVerify = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&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: #2b91af"&gt;EventArgs&lt;/SPAN&gt; e)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (IsPostBack)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Verify the submitted code to the generated code&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.Cryptography.&lt;SPAN style="COLOR: #2b91af"&gt;SHA256Managed&lt;/SPAN&gt; hashAlg = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; System.Security.Cryptography.&lt;SPAN style="COLOR: #2b91af"&gt;SHA256Managed&lt;/SPAN&gt;();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; hashText = &lt;SPAN style="COLOR: #2b91af"&gt;HttpUtility&lt;/SPAN&gt;.UrlEncode(hashAlg.ComputeHash(System.Text.&lt;SPAN style="COLOR: #2b91af"&gt;Encoding&lt;/SPAN&gt;.Default.GetBytes(TextBoxHip.Text)));&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; hashTextFromHeader =&amp;nbsp; Request.Cookies[&lt;SPAN style="COLOR: #a31515"&gt;"HipHash"&lt;/SPAN&gt;].Value;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LabelCodeStatus.Text = &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (hashTextFromHeader != hashText)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&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 style="COLOR: green"&gt;// If the code is not correct, save the contents of the control to verify (usually &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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 style="COLOR: green"&gt;// a comments-textbox) in a session so visitors don't loose their elaborate entry&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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 style="COLOR: green"&gt;// After that, redirect to the same page&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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 style="COLOR: #2b91af"&gt;TextBox&lt;/SPAN&gt; textBoxControl = (&lt;SPAN style="COLOR: #2b91af"&gt;TextBox&lt;/SPAN&gt;)&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.Parent.FindControl(m_controlToVerify);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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; Session[&lt;SPAN style="COLOR: #a31515"&gt;"HipControlToVerifyValue"&lt;/SPAN&gt;] = textBoxControl != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; ? textBoxControl.Text : &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&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;/P&gt;
&lt;P style="MARGIN: 0px"&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; Response.Redirect(Request.Url.PathAndQuery);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (!IsPostBack)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;TextBox&lt;/SPAN&gt; textBoxControl = (&lt;SPAN style="COLOR: #2b91af"&gt;TextBox&lt;/SPAN&gt;)&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.Parent.FindControl(m_controlToVerify);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// If return from a redirect, meaning the code entered was incorrect, &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// fill the textbox with the session-stored entry.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (Session[&lt;SPAN style="COLOR: #a31515"&gt;"HipControlToVerifyValue"&lt;/SPAN&gt;] != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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; textBoxControl.Text = &lt;SPAN style="COLOR: #2b91af"&gt;HttpUtility&lt;/SPAN&gt;.HtmlEncode((&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;)Session[&lt;SPAN style="COLOR: #a31515"&gt;"HipControlToVerifyValue"&lt;/SPAN&gt;]);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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; LabelCodeStatus.Text = &lt;SPAN style="COLOR: #a31515"&gt;"Wrong code"&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Session[&lt;SPAN style="COLOR: #a31515"&gt;"HipControlToVerifyValue"&lt;/SPAN&gt;] = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;}&lt;/P&gt;&lt;/DIV&gt;&lt;!--EndFragment--&gt;
&lt;P&gt;The most important part of the control is to verify the code entered. Since this is stored in a cookie, we retrieve it first and then compare the hashed value of the code with the hashed value stored in the cookie. If the values match we do... nothing. Just let the rest of the page render and do any processing it may need to. However, if values do not match, there's a &lt;FONT face="Courier New"&gt;Response.Redirect&lt;/FONT&gt; to the same page, so rendering and processing of the page stops. &lt;/P&gt;
&lt;P&gt;It's certainly a pain if you've just entered an elaborate comment somewhere only to make a typo when you enter the captcha-code, thereby redirecting and losing everything you wrote. So, to make it more friendly, the control has a property &amp;#8220;ControlToVerify&amp;#8221;. Perhaps the naming is incorrect, but this allows you to store the value of a control, before redirecting and setting the value of the control after the redirect. In this code, it has to be a textbox, but you can change it to anything you like of course.&lt;/P&gt;
&lt;P&gt;After all this, you can put the control on any ASP.NET web page, like this:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; FONT-FAMILY: Consolas; mso-highlight: yellow; mso-no-proof: yes"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;@&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: #a31515"&gt;Register&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;Src&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="UserControlHip.ascx"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;TagName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="UserControlHip"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;TagPrefix&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="uc1"&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This Register directive is to be set at the top of the page. The following code is placed at the position you want people to enter the verification code.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;uc1&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;UserControlHip&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="UserControlHip1"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;ControlToVerify&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="TextBox1"&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;uc1&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;UserControlHip&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: red"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="TextBox1"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;Button&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: red"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="Button1" &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;Text&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="Button"&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;That's it. Please add error handling code as you see fit. The rendered image is pretty simple, and you've probably seen more elaborate ones. But I think it'll do the job. If you want to see what it looks like, check out an &lt;A href="http://www.devtips.net/Artikelen.aspx"&gt;article&lt;/A&gt;, &lt;A href="http://www.devtips.net/Codesnippets.aspx"&gt;code snippet&lt;/A&gt; or &lt;A href="http://www.devtips.net/Nieuws.aspx"&gt;news item&lt;/A&gt; on &lt;A href="http://www.devtips.net/"&gt;DevTips.NET&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;You can download a &lt;A href="http://todotnet.com/WebSiteHIP.zip"&gt;sample project that implements all this here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11313.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Memory problems when hosting ASP.NET on Windows 2003</title><link>http://todotnet.com/archive/2007/04/26/11305.aspx</link><pubDate>Thu, 26 Apr 2007 07:43:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/04/26/11305.aspx</guid><wfw:comment>http://todotnet.com/comments/11305.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/04/26/11305.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11305.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11305.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://weblogs.asp.net/hosterposter/archive/2007/04/25/asp-net-applications-running-out-of-memory.aspx"&gt;Hoster Poster&lt;/A&gt; made me aware of an interesting &lt;A href="http://support.microsoft.com/kb/911716"&gt;KB article&lt;/A&gt;&amp;nbsp;that describes the issue of failures when hosting ASP.NET on Windows 2003. Simple&amp;nbsp;reading the title really makes you wonder: &lt;/P&gt;
&lt;P&gt;&amp;#8220;You may receive an error message, or the computer may stop responding, when you host Web applications that use ASP.NET on a computer that is running Windows Server 2003&amp;#8220; &lt;/P&gt;
&lt;P&gt;Say what? If I host ASP.NET on Windows Server 2003 I may receive an error or the machine may stop responding altogether?&amp;nbsp;Okay, the article itself explains the conditions under which this may occur.&amp;nbsp;But it doesn't make me happy (as&amp;nbsp;we're doing ASP.NET hosting too). &lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11305.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Trouble with threads and cultures</title><link>http://todotnet.com/archive/2007/04/11/11303.aspx</link><pubDate>Wed, 11 Apr 2007 14:19:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/04/11/11303.aspx</guid><wfw:comment>http://todotnet.com/comments/11303.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/04/11/11303.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11303.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11303.aspx</trackback:ping><description>&lt;P&gt;Here's something that bit me today. A few days ago, a Windows Service I built was redeployed to another machine. Most operations went on just fine, but some didn't. And as always:&amp;nbsp;&lt;EM&gt;'it worked on my machine'&lt;/EM&gt;. As it had also worked in testing and on the previous production server. After some digging, we found that the regional settings for the service account on this machine were not&amp;nbsp;what they&amp;nbsp;were&amp;nbsp;on the other servers. Yes, I know, don't depend on regional settings, but there was some legacy code (hah..it's not my fault) and it had never created issues before. &lt;/P&gt;
&lt;P&gt;So, easy enough, we set the thread for the service to the required culture, like so:&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Consolas"&gt;
&lt;P style="MARGIN: 0px"&gt;System.Threading.&lt;SPAN style="COLOR: teal"&gt;Thread&lt;/SPAN&gt;.CurrentThread.CurrentCulture = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; System.Globalization.&lt;SPAN style="COLOR: teal"&gt;CultureInfo&lt;/SPAN&gt;(&lt;SPAN style="COLOR: maroon"&gt;"nl-NL"&lt;/SPAN&gt;);&lt;/P&gt;&lt;/DIV&gt;&lt;!--EndFragment--&gt;
&lt;P&gt;Unfortunately, it didn't have the desired effect. Nothing changed. As it turns out, you have to set the culture on every thread running. See the sample below:&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Consolas"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Globalization;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Threading;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; RegionalTime&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;{&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;ClassDemo&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; TimeNow()&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: teal"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: maroon"&gt;"Date setting: {0} ({1})"&lt;/SPAN&gt;,&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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 style="COLOR: teal"&gt;DateTime&lt;/SPAN&gt;.Now.ToLongDateString(),&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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 style="COLOR: teal"&gt;Thread&lt;/SPAN&gt;.CurrentThread.CurrentCulture.DisplayName);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;delegate&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;TimeNowDelegate&lt;/SPAN&gt;();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;SPAN style="COLOR: teal"&gt;STAThread&lt;/SPAN&gt;]&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Main(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[] args)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Look at current regional settings&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TimeNow();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Switch to French&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: teal"&gt;Thread&lt;/SPAN&gt;.CurrentThread.CurrentCulture = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;CultureInfo&lt;/SPAN&gt;(&lt;SPAN style="COLOR: maroon"&gt;"fr-FR"&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TimeNow();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Switch to US&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: teal"&gt;Thread&lt;/SPAN&gt;.CurrentThread.CurrentCulture = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;CultureInfo&lt;/SPAN&gt;(&lt;SPAN style="COLOR: maroon"&gt;"en-US"&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TimeNow();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Now through a delegate on a different thread.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: teal"&gt;TimeNowDelegate&lt;/SPAN&gt; methodDelegate = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;TimeNowDelegate&lt;/SPAN&gt;(TimeNow);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: teal"&gt;IAsyncResult&lt;/SPAN&gt; result = methodDelegate.BeginInvoke(&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;while&lt;/SPAN&gt; (!result.IsCompleted)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&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 style="COLOR: teal"&gt;Thread&lt;/SPAN&gt;.Sleep(500);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;}&lt;/P&gt;&lt;/DIV&gt;&lt;!--EndFragment--&gt;
&lt;P&gt;As you will see, from running this code, the call through the delegate uses the regional settings from the active user.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Date setting: woensdag 11 april 2007 (Dutch (Netherlands))&lt;BR&gt;Date setting: mercredi 11 avril 2007 (French (France))&lt;BR&gt;Date setting: Wednesday, April 11, 2007 (English (United States))&lt;BR&gt;Date setting: woensdag 11 april 2007 (Dutch (Netherlands))&lt;BR&gt;Press any key to continue . . .&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;There seems to be no way to specify one culture for the entire AppDomain (note: I'm not talking about ASP.NET here, this was a multithreaded Windows Service). If any thinks or better yet, knows, that this is possible, let me know. I am always eager to learn.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11303.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>DevTips.NET renewed</title><link>http://todotnet.com/archive/2007/04/10/11299.aspx</link><pubDate>Tue, 10 Apr 2007 09:23:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/04/10/11299.aspx</guid><wfw:comment>http://todotnet.com/comments/11299.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/04/10/11299.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11299.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11299.aspx</trackback:ping><description>&lt;P&gt;It's taken quite some time, but I've finally put the new &lt;A href="http://www.devtips.net"&gt;DevTips.NET&lt;/A&gt; website online. The old site was really... old. The codebase was from 2001 when I learned to code in C# myself. You can imagine it didn't incorporate best practices, since there were few practices to begin with. &lt;/P&gt;
&lt;P&gt;So a rewrite was quite necessary. Now, I could have used &lt;A href="http://www.dotnetnuke.com/"&gt;DotNetNuke&lt;/A&gt;, or &lt;A href="http://www.communityserver.org"&gt;CommunityServer&lt;/A&gt; or any other project&amp;nbsp;to base the new site on but where the fun in that ;-)&lt;/P&gt;
&lt;P&gt;The entire code was written by me, but I did use &lt;A href="http://www.genom-e.com/ProductInfo/AboutGenome/tabid/228/Default.aspx"&gt;TechTalk's Genome&lt;/A&gt;&amp;nbsp;(&lt;A href="http://weblogs.asp.net/fbouma"&gt;sorry, Frans&lt;/A&gt;) as&amp;nbsp;the O/R mapper which saved me a lot of time. &lt;/P&gt;
&lt;P&gt;One of the decisions I made was to remove the forum. For one, the forum was not very active and this would prove dissappointing for people asking questions. Secondly, there are a number of Dutch forums already available (like the ones on &lt;A href="http://www.dotned.nl"&gt;www.dotned.nl&lt;/A&gt;, &lt;A href="http://www.sdn.nl"&gt;www.sdn.nl&lt;/A&gt;, and &lt;A href="http://www.vbcentral.nl"&gt;www.vbcentral.nl&lt;/A&gt;).&amp;nbsp;Improvements have&amp;nbsp;been made to the layout (most obvious), the commenting and rating system. Also, it's easier to edit content and publish news stories with more body than previously.&lt;/P&gt;
&lt;P&gt;If you would like to add content to the site, e.g. news, codesnippets, articles or otherwise, please &lt;A href="http://www.devtips.net/login.aspx"&gt;register an account&lt;/A&gt;. You can add and manage codesnippets immediately. If you want to publish news or articles, &lt;A href="http://www.devtips.net/Contact.aspx"&gt;drop me a line&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;If you spot any errors, please let me know.&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11299.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Congratulations! We are pleased to present you with the 2007 Microsoft® MVP Award!</title><link>http://todotnet.com/archive/2007/04/01/11290.aspx</link><pubDate>Sun, 01 Apr 2007 10:46:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/04/01/11290.aspx</guid><wfw:comment>http://todotnet.com/comments/11290.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/04/01/11290.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11290.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11290.aspx</trackback:ping><description>&lt;P&gt;This just in: &amp;#8220;The Microsoft MVP Award is our way of saying thank you and to honor and support the significant contributions you make to communities worldwide. As a recipient of Microsoft&amp;#8217;s Most Valuable Professional award, you join an elite group of technical community leaders from around the world who foster the free and objective exchange of knowledge by actively sharing your real world expertise with users and Microsoft.&amp;nbsp; Microsoft salutes all MVPs for promoting the spirit of community and enhancing people&amp;#8217;s lives and the industry&amp;#8217;s success everyday.&amp;nbsp; To learn more about the MVP Program, visit: &lt;A href="http://www.microsoft.com/mvp"&gt;www.microsoft.com/mvp&lt;/A&gt;.&amp;#8221; &lt;/P&gt;
&lt;P&gt;What can I say? I've been active in the community this past year (mmm... not so much on this blog, I have to work on that), so I was hoping to get my MVP status renewed, but you never know for sure until you get this e-mail. I think it's also an encouragement to continue my efforts. &lt;/P&gt;
&lt;P&gt;In fact, at this very moment I'm planning the sessions for our first Dutch .NET CodeCamp: &lt;A href="http://www.code-camp.nl/"&gt;http://www.code-camp.nl/&lt;/A&gt;. A joint effort of &lt;A href="http://www.sdn.nl"&gt;SDN&lt;/A&gt;, &lt;A href="http://www.vbcentral.nl"&gt;VBCentral&lt;/A&gt; and &lt;A href="http://www.dotned.nl"&gt;DotNed&lt;/A&gt;. It looks like we've got more session proposals (25) than we can accomodate (+/- 20), so it's going to be a packed day. If you haven't signed up, please hurry, because there's a limit of 120&amp;nbsp;attendees. Given that the event won't draw hundreds of people means you can more easily interact with your peers, and with the speakers. Subjects will range from: &lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa663326.aspx"&gt;WPF&lt;/A&gt;, &lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/A&gt;, &lt;A href="http://msdn2.microsoft.com/en-us/xna/default.aspx"&gt;XNA&lt;/A&gt;, &lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx"&gt;WF&lt;/A&gt;, and many other MLA's (multi-letter-acronyms). However, it will not all be about great&amp;nbsp;&amp;#8220;new stuff&amp;#8221;. We'll also cover topics that address issues we're having today. How about: COM Interop, ASP.NET Ajax, Designing Windows Controls. I'll do a session (if I can fit it in) on Visual C# 2005 tips and tricks. Although upon request, we dive into the new 'Orcas' release as well.&lt;/P&gt;
&lt;P&gt;Anyway, I'm grateful to be nominated MVP again and hope to see you on May 12th.&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11290.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Omg, I'm also tagged</title><link>http://todotnet.com/archive/2007/01/05/11259.aspx</link><pubDate>Fri, 05 Jan 2007 15:37:00 GMT</pubDate><guid>http://todotnet.com/archive/2007/01/05/11259.aspx</guid><wfw:comment>http://todotnet.com/comments/11259.aspx</wfw:comment><comments>http://todotnet.com/archive/2007/01/05/11259.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11259.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11259.aspx</trackback:ping><description>&lt;P&gt;So yes, I tried to escape but &lt;A href="http://en.wikipedia.org/wiki/Borg_%28Star_Trek%29"&gt;resistance is futile&lt;/A&gt;. &lt;A href="http://www.obelink.com/Blog"&gt;Andr&amp;#233; Obelink&lt;/A&gt; was kind enough to &lt;A href="http://www.obelink.com/Blog/tabid/52/EntryID/27/Default.aspx"&gt;tag me&lt;/A&gt;, and therefore, it seems I need to divulge some trivia you may not know from me. &lt;/P&gt;
&lt;P&gt;1. I learned computing around the age of 13 or 14. It was an Easter holiday and my parents decided I should go to 'computer camp'. Here I learned basic on a true and original &lt;A href="http://computermuseum.50megs.com/brands/p2000.htm"&gt;Philips P2000&lt;/A&gt;. You can imagine my discomfort when my parents subsequently decided to buy a &lt;A href="http://en.wikipedia.org/wiki/Commodore_64"&gt;Commodore 64&lt;/A&gt;. A device I knew nothing about. Well, that didn't take long. With Latin classes at school, I was kinda showing off my skills by programming Dutch-Latin translation on the C64's that were on display at the nearby &lt;A href="http://www.vroomendreesmann.nl/Home.aspx"&gt;V&amp;D&lt;/A&gt;. Well, local. &lt;A href="http://www.breda.nl/"&gt;Breda&lt;/A&gt; that is, since I grew up in &lt;A href="http://nl.wikipedia.org/wiki/Gilze_en_Rijen"&gt;Rijen&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;2. My ambition was to be an astrophysicist. But then I discovered I sucked at chemistry and physics, so that was a nogo. &lt;/P&gt;
&lt;P&gt;3. To finish my studies in public administration (&lt;A href="http://www.imdb.com/title/tt0066765/"&gt;and now for something completely different&lt;/A&gt;) I wrote my thesis on a comparative study between drugs policy in Rotterdam and Northern France. Mid nineties there was quite some publicity around the obvious differences, with France being more repressive and the Netherlands being ehmm 'pragmatic'. My findings can be found in &lt;A href="http://um2091.unimaas.nl:8180/CHARSET=ISO-8859-1/DB=1/FKT=4/FRM=Unquiet+Dead,The/IMPLAND=Y/LNG=NE/LRSET=2/SET=2/SID=a8b7b887-64/SRT=YOP/TTL=1/CLK?IKT=4&amp;TRM=drugsrunners"&gt;this book&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;4. In 1996 I went to Star Trek convention in... Italy. Well, just thought it would be fun even though I didn't speak much Italian. Obviously I knew at least one person to get me invited. Had a great time. I've been a Star Trek fan ever since &lt;A href="http://www.startrek.com/startrek/view/series/TOS/"&gt;the original series&lt;/A&gt;. You won't see me in a costume though, I like the series and science fiction in general, but I'm not crazy ;-) &lt;/P&gt;
&lt;P&gt;5. I met my wife &lt;A href="http://sanderenanja.com/gallery/image/407.aspx"&gt;Anja&lt;/A&gt; through my sister after visiting her, my sister that is, in India. Anja also went for a visit and brought back the sneakers I forgot. We got married in 2000 and have two kids now: &lt;A href="http://sanderenanja.com/gallery/image/454.aspx"&gt;Steven&lt;/A&gt; (5) and &lt;A href="http://sanderenanja.com/gallery/image/455.aspx"&gt;Michelle&lt;/A&gt; (3). You can check their stories at &lt;A href="http://www.sanderenanja.com"&gt;www.sanderenanja.com&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;And now it's my turn to tag these: &lt;A href="http://codebetter.com/blogs/peter.van.ooijen"&gt;Peter van Ooijen&lt;/A&gt;, &lt;A href="http://dotnettogo.com/blogs/emad"&gt;Emad Ibrahim&lt;/A&gt; , &lt;A href="http://technolog.nl/blogs/eprogrammer"&gt;Egbert Nierop&lt;/A&gt;, &lt;A href="http://www.weblog.stranger.nl/"&gt;Stefan Stranger&lt;/A&gt;, &lt;A href="http://blogs.developpeur.org/nix"&gt;Nix&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;IMG height=14 alt="" src="http://www.obelink.com/Portals/0/Images/Bullet/bullet_gray_14.png" width=14 align=left&gt; &lt;A href="http://pulverblog.pulver.com/archives/006087.html"&gt;Blog-Tag: A game for Virtual Party&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11259.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sander Gerz</dc:creator><title>Windows CardSpace gets, no, already had, Firefox support </title><link>http://todotnet.com/archive/2006/12/14/11255.aspx</link><pubDate>Thu, 14 Dec 2006 15:50:00 GMT</pubDate><guid>http://todotnet.com/archive/2006/12/14/11255.aspx</guid><wfw:comment>http://todotnet.com/comments/11255.aspx</wfw:comment><comments>http://todotnet.com/archive/2006/12/14/11255.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://todotnet.com/comments/commentRss/11255.aspx</wfw:commentRss><trackback:ping>http://todotnet.com/services/trackbacks/11255.aspx</trackback:ping><description>&lt;P&gt;When &lt;A href="http://blogs.zdnet.com/microsoft/?p=151"&gt;Mary Jo Foley writes that Firefox will get support for Windows Cardspace&lt;/A&gt;, a &lt;A href="http://geekswithblogs.net/hinshelm/archive/2006/12/14/101120.aspx"&gt;number&lt;/A&gt; of &lt;A href="http://blogs.msdn.com/richardt/archive/2006/12/12/firefox-extension-for-windows-cardspace.aspx"&gt;bloggers&lt;/A&gt; will pick up on that (see also &lt;A href="http://blogs.msdn.com/richardt/archive/2006/12/13/mary-jo-foley-writes-about-kevin-s-firefox-extension-for-windows-cardspace.aspx"&gt;here&lt;/A&gt;&amp;nbsp;&amp;nbsp;and &lt;A href="http://blogs.msdn.com/garretts/archive/2006/12/12/cardspace-extension-for-firefox.aspx"&gt;here&lt;/A&gt;). &lt;/P&gt;
&lt;P&gt;Although choice is never a bad thing, &lt;A href="http://xmldap.org/"&gt;there was a Firefox extension&lt;/A&gt;&amp;nbsp;doing that &lt;A href="http://xmldap.blogspot.com/2006/12/another-firefox-cardspace-extension.html"&gt;already&lt;/A&gt;. The new one wraps the native CardSpace implementation on Windows so you can use it from Firefox as oposed to the one at &lt;A href="http://xmldap.org/"&gt;xmldap.org&lt;/A&gt; that uses Java behind the scenes.&lt;/P&gt;
&lt;P&gt;This has advantages and disadvantages. Anyone interested in &lt;A href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1004281&amp;amp;SiteID=1"&gt;this thread&lt;/A&gt;?&lt;/P&gt;&lt;img src ="http://todotnet.com/aggbug/11255.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>