<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-gb">
  <title>Tim</title>
  <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/" />
  
  <icon>favicon.ico</icon>
  <updated>2009-08-11T07:02:07.622301+01:00</updated>
  <author>
    <name>Tim Gaunt</name>
  </author>
  <subtitle>Footprints in the snow of a warped mind</subtitle>
  <id>http://blogs.thesitedoctor.co.uk/tim/</id>
  <generator uri="http://dasblog.info/" version="2.2.8279.16125">DasBlog</generator>
  <link rel="self" href="http://feeds.feedburner.com/timgaunt" type="application/atom+xml" /><feedburner:emailServiceId>timgaunt</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
    <title>CodeGarden 09 Open Space Minutes - Space 1: How to sell Umbraco</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/Ap6RQuglJ68/CodeGarden+09+Open+Space+Minutes+Space+1+How+To+Sell+Umbraco.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,409b9297-7d3e-4698-83cd-376d34bc553b.aspx</id>
    <published>2009-07-27T22:53:28.737454+01:00</published>
    <updated>2009-07-27T22:53:28.737454+01:00</updated>
    <category term="Business" label="Business" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Business.aspx" />
    <category term="Business/Business Start-up Advice" label="Business/Business Start-up Advice" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,BusinessBusinessStartupAdvice.aspx" />
    <category term="Business/Client" label="Business/Client" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,BusinessClient.aspx" />
    <category term="Business/Expanding Your Business" label="Business/Expanding Your Business" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,BusinessExpandingYourBusiness.aspx" />
    <category term="Marketing" label="Marketing" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Marketing.aspx" />
    <category term="The Site Doctor" label="The Site Doctor" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,TheSiteDoctor.aspx" />
    <category term="Umbraco" label="Umbraco" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Umbraco.aspx" />
    <category term="Umbraco/CodeGarden/2009" label="Umbraco/CodeGarden/2009" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,UmbracoCodeGarden2009.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
It's taken some time to get here and there's still more to add as I think this is&#xD;
a pretty big topic but I thought I'd get started. I wanted to keep the session more&#xD;
focused on the selling points of Umbraco and how people pitch Umbraco to the clients&#xD;
than selling techniques which on the whole we managed to do.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The first thing I stressed was that I wasn't going to teach you how to sell or selling&#xD;
techniques as I've never found that hard selling works -though I'm not saying it doesn't,&#xD;
I just prefer to educate the client into the most suitable solution (even if that&#xD;
isn't us).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
There were a number of questions that were raised and I'll answer what I can here,&#xD;
if you were at the session and I've missed something, please let me know and I'll&#xD;
get it added:&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
What are the key selling points of Umbraco &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
How do you pitch Umbraco &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Do you tell clients it's open source (or use that as a sales point)? &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
How do you price Umbraco &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Once you've won, what do you ask your client &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
How do you support Umbraco &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
How do you get around the question of "What happens if you get hit by a bus?" &#xD;
&lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;h2&gt;What are the key selling points of Umbraco&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
A couple of the attendees came up with better 30second sales pitches so I'm sure they'll&#xD;
post those up shortly but here's a few I remember:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
It's easy to use -you don't need any previous computer experience &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
You can edit any page's content yourself at any time &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
It's highly flexible and lightweight &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
It's search engine friendly &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
It's open source (this really can be a selling point at the right time) &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;h2&gt;Do you tell clients it's open source (or use that as a sales point)?&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
We do and we don't. Again it really comes down to who you're pitching Umbraco to.&#xD;
Where the client has had issues with developers not releasing source etc then it's&#xD;
clearly a selling point. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Generally we do tend to explain to clients that we will base their website on an open&#xD;
source project that we then build on and customise further to suit their needs and&#xD;
that by using best practice methodologies, any developer can in theory pick up the&#xD;
system and continue to develop it (even if they have no experience of Umbraco).&#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;How do you price Umbraco&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
This question was asked in a couple of different ways throughout the session and it's&#xD;
a topic in itself (see the article I wrote a while ago about pricing your work).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you look at Umbraco in the right way you'll see that it's actually rather easy&#xD;
to price as there are a few components that you can sell either individually or together:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Installation and configuration &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Customisation &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Hosting &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Support &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
All you need to do is work out a minimum cost for each component and then that will&#xD;
give you a core system cost. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Once you have your core Umbraco costs (don't forget to factor in your license costs)&#xD;
you can then alter the costs accordingly for your client -and this has to be on a&#xD;
case-by-case basis.  &#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;How do you pitch Umbraco&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
This is easy, there are so many selling points to Umbraco that regardless of what&#xD;
the client is looking for, as long as it's CMS based, Umbraco will have some benefit&#xD;
you can overview to the client.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
When pitching Umbraco, we have found educating the user as to the benefits and what&#xD;
the client should be looking for in other systems. If you do this, then the majority&#xD;
of the time, the rest of the competition falls by the wayside.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If the client is a large corporate it's always worth mentioning that it offers much&#xD;
of the functionality that SharePoint does but with little of the cost (or setup pain!).&#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;Once you've won the contract, what do you ask your client&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
The first thing to do is to get all the information you need to complete your contract&#xD;
(or at least tell your client what you'll need and when). You should know what you'll&#xD;
need already but we tend to ask for:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Design inspiration (websites the client does and doesn't like -and why) &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Logos and other source imagery &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Text for the website (you'd be best to load the initial content during training but&#xD;
get the client to think about it while you're developing or you'll never get there!) &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
Next, you'll need to make sure your paperwork is in order. Once you have agreed the&#xD;
general premise of your contract, it's important that you confirm all deliverables&#xD;
(what you'll be doing for the client) in a work order with the client. This avoids&#xD;
an ambiguity on what you'll be delivering and when. This doesn't need to be pages&#xD;
of text (though sometimes it needs to be) but avoids disagreements later.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
You should &lt;strong&gt;always&lt;/strong&gt; request signed work order and deposit (we request&#xD;
a minimum of 20% regardless of project spend) at a minimum before starting any work.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Once you have the signed work order (you sign one for the client to keep and keep&#xD;
one yourself), you can start thinking about the project. If it'll take longer than&#xD;
a week to deliver, I recommend you provide the client with rough timescales, this&#xD;
will have the added benefit of helping you focus your mind.&#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;How do you support Umbraco&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
This is something that Paul Sterling addressed through another session and if he doesn't&#xD;
write up his notes I'll make a few notes in another post.&#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;How do you get around the question of "What happens if you get hit by a bus?"&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
Although this was asked a couple of times throughout the session, I avoided answering&#xD;
it a little due to a conflict of interest. For the past few months we've been working&#xD;
hard on a new system called &lt;a title="Crisis Cover - Protecting your business against the unforeseen" href="http://www.crisiscover.co.uk/"&gt;Crisis&#xD;
Cover&lt;/a&gt; which has been designed to help you with this exact question.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="Crisis Cover - Protecting your business against the unforeseen" href="http://www.crisiscover.co.uk/"&gt;&#xD;
            &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="apple-touch-icon[1]" border="0" alt="apple-touch-icon[1]" align="left" src="http://blogs.thesitedoctor.co.uk/tim/content/binary/WindowsLiveWriter/CodeGarden09OpenSpaceMinutesSpace1Howtos_130B7/apple-touch-icon%5B1%5D_c94f9aed-e4e5-4f09-b0d5-b691d2e1c62d.png" width="61" height="61"&gt;&lt;/img&gt; Crisis&#xD;
Cover&lt;/a&gt; monitors you to ensure that you're still around and if you don't respond&#xD;
to a number of alerts, it will contact your clients informing there's something wrong. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I'll post more information about &lt;a title="Crisis Cover - Protecting your business against the unforeseen" href="http://www.crisiscover.co.uk/"&gt;Crisis&#xD;
Cover&lt;/a&gt;, but if you're interested in getting involved with the beta, leave me your&#xD;
email and I'll get one sent out.&#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;In Closing&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
There is a lot of information about selling and business in general in my previous&#xD;
post "&lt;a href="http://blogs.thesitedoctor.co.uk/tim/2007/01/29/Business+Startup+Advice.aspx"&gt;Business&#xD;
start-up advice&lt;/a&gt;" which if you're starting out, I really recommend you reading&#xD;
as it should give you a really good start (and includes example Service Level Agreements,&#xD;
Contracts and other useful documents).&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=409b9297-7d3e-4698-83cd-376d34bc553b"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gid9GeQYCLU7oPbeKJvnhv_RGxI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gid9GeQYCLU7oPbeKJvnhv_RGxI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gid9GeQYCLU7oPbeKJvnhv_RGxI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gid9GeQYCLU7oPbeKJvnhv_RGxI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=Ap6RQuglJ68:W16UJNcAhgc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=Ap6RQuglJ68:W16UJNcAhgc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=Ap6RQuglJ68:W16UJNcAhgc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=Ap6RQuglJ68:W16UJNcAhgc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=Ap6RQuglJ68:W16UJNcAhgc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=Ap6RQuglJ68:W16UJNcAhgc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=Ap6RQuglJ68:W16UJNcAhgc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/Ap6RQuglJ68" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/07/27/CodeGarden+09+Open+Space+Minutes+Space+1+How+To+Sell+Umbraco.aspx</feedburner:origLink></entry>
  <entry>
    <title>CodeGarden 09 Open Space Minutes -Space 2: Exception Handling in Umbraco</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/l5RDhSClmGg/CodeGarden+09+Open+Space+Minutes+Space+2+Exception+Handling+In+Umbraco.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,bd1cc28f-f7b4-4f09-b096-6091ccfa43d7.aspx</id>
    <published>2009-07-09T01:23:38.46+01:00</published>
    <updated>2009-08-11T07:02:07.622301+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="ASP.Net/Error Reporting" label="ASP.Net/Error Reporting" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNetErrorReporting.aspx" />
    <category term="Umbraco" label="Umbraco" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Umbraco.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Those of you lucky enough to go to CodeGarden '09 you'll know the format of the Open&#xD;
Space already but for those of you who didn't, Open Space is the time that the attendees&#xD;
are invited to talk about something they're interested in so I proposed two:&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
Space 1: Selling Umbraco &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Space 2: Exception handing and error reporting in Umbraco (and other .net websites/applications) &#xD;
&lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;p&gt;&#xD;
I'll write up the Selling Umbraco talk shortly but I wanted to put a few resources&#xD;
together for it first so decided to write this one up first.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
First of all we had a brief chat about how everyone handles errors in their applications&#xD;
and the various error handling options available. We discussed three options:&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.thesitedoctor.co.uk/tim/2009/02/27/Advanced+Error+Reporting+In+Umbraco+DasBlog+And+Other+ASPNet+Sites.aspx"&gt;Error&#xD;
Handler v2.0&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://code.google.com/p/elmah/"&gt;ELMAH&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.exceptioneer.com/"&gt;Exceptioneer&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;p&gt;&#xD;
I've only had a brief look at &lt;a href="http://code.google.com/p/elmah/"&gt;ELMAH&lt;/a&gt; and&#xD;
found at the time it was a little too much in the way of RSS feeds etc and I just&#xD;
want an email alert, that said, Lee Kelleher has written a good article about &lt;a href="http://blog.leekelleher.com/2009/04/23/integrating-elmah-with-umbraco/"&gt;integrating&#xD;
ELMAH with Umbraco here&lt;/a&gt; and I've written another article about &lt;a href="http://blogs.thesitedoctor.co.uk/tim/2009/02/27/Advanced+Error+Reporting+In+Umbraco+DasBlog+And+Other+ASPNet+Sites.aspx"&gt;integrating&#xD;
Error Handler v2.0 into Umbraco here&lt;/a&gt; so I'll overview how to integrate &lt;a href="http://www.exceptioneer.com/"&gt;Exceptioneer&lt;/a&gt; into&#xD;
Umbraco here instead.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Wiring up &lt;a href="http://www.exceptioneer.com/"&gt;Exceptioneer&lt;/a&gt; with your site couldn't&#xD;
be easier, the best bit is that they do all the hard work for you with their "Integrate"&#xD;
section of the site but to give you a quick snapshot of how easy it is, first of all, &lt;a href="https://www.exceptioneer.com/Site/Downloads.aspx"&gt;download&#xD;
the dll&lt;/a&gt; and pop it into your bin folder. Then edit your web.config:&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="code"&gt;&#xD;
          &lt;code class="brush: xml; toolbar: false; auto-links: false;"&gt;&amp;lt;?xml&#xD;
version="1.0"?&amp;gt; &amp;lt;configuration&amp;gt; &amp;lt;configSections&amp;gt; &amp;lt;section name="Exceptioneer"&#xD;
type="Exceptioneer.WebClient.ClientModuleConfiguration, Exceptioneer.WebClient" requirePermission="true"&#xD;
/&amp;gt; &amp;lt;/configSections&amp;gt; &amp;lt;!-- This is where you get to specify your API Key&#xD;
and Application Name --&amp;gt; &amp;lt;Exceptioneer ApiKey="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"&#xD;
ApplicationName="YOUR APPLICATION NAME" /&amp;gt; &amp;lt;!-- If you're using IIS 6.0 or Visual&#xD;
Studio's built in web server you'll need to add this bit --&amp;gt; &amp;lt;system.web&amp;gt;&#xD;
&amp;lt;httpModules&amp;gt; &amp;lt;add name="Exceptioneer" type="Exceptioneer.WebClient.ClientModule,&#xD;
Exceptioneer.WebClient" /&amp;gt; &amp;lt;/httpModules&amp;gt; &amp;lt;!-- If you want to use the&#xD;
JavaScript handling then add the Http Handler as so --&amp;gt; &amp;lt;httpHandlers&amp;gt; &amp;lt;add&#xD;
path="ExceptioneerJavaScript.axd" verb="GET,POST" type="Exceptioneer.WebClient.JavaScriptHandler,&#xD;
Exceptioneer.WebClient" /&amp;gt; &amp;lt;/httpHandlers&amp;gt; &amp;lt;/system.web&amp;gt; &amp;lt;!-- If&#xD;
you're using IIS 7.0 you'll need to add this bit too --&amp;gt; &amp;lt;system.webServer&amp;gt;&#xD;
&amp;lt;validation validateIntegratedModeConfiguration="false"/&amp;gt; &amp;lt;modules&amp;gt; &amp;lt;add&#xD;
name="Exceptioneer" preCondition="managedHandler" type="Exceptioneer.WebClient.ClientModule,&#xD;
Exceptioneer.WebClient" /&amp;gt; &amp;lt;/modules&amp;gt; &amp;lt;handlers&amp;gt; &amp;lt;add name="ExceptioneerJavaScript"&#xD;
path="ExceptioneerJavaScript.axd" verb="GET,POST" type="Exceptioneer.WebClient.JavaScriptHandler,&#xD;
Exceptioneer.WebClient" /&amp;gt; &amp;lt;/handlers&amp;gt; &amp;lt;/system.webServer&amp;gt; &amp;lt;/configuration&amp;gt;&lt;/code&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
Now, one of the coolest things about &lt;a href="http://www.exceptioneer.com/"&gt;Exceptioneer&lt;/a&gt; is&#xD;
that you can now also debug JavaScript errors! To debug the javascript errors, just&#xD;
include this script in your templates:&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="brush: xml; toolbar: false; auto-links: false;" name="code"&gt;&amp;lt;script src="/ExceptioneerJavaScript.axd?Reporter=true" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
That's it, you're done. Easy eh? If you want to know more about what it can do, Phil's&#xD;
put together this "lovely" &lt;a href="https://www.exceptioneer.com/Public/Demonstration.aspx"&gt;video&#xD;
overview&lt;/a&gt;. Exceptioneer have done a great comparison of the main features of &lt;a href="https://www.exceptioneer.com/Public/ExceptioneerAndELMAH.aspx"&gt;comparison&#xD;
Exceptioneer and ELMAH here&lt;/a&gt;, the downside though is &lt;a href="http://www.exceptioneer.com/"&gt;Exceptioneer&lt;/a&gt; is&#xD;
still in beta. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Remember, regardless of how good you think your code is, you should always integrate&#xD;
some form of error handling in your website even if it is just an email to alert you&#xD;
to the fact. &#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=bd1cc28f-f7b4-4f09-b096-6091ccfa43d7"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c01rI1i-fUQXXWLUxh6eS2fiSL8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c01rI1i-fUQXXWLUxh6eS2fiSL8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c01rI1i-fUQXXWLUxh6eS2fiSL8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c01rI1i-fUQXXWLUxh6eS2fiSL8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=l5RDhSClmGg:zDezzfkId0o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=l5RDhSClmGg:zDezzfkId0o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=l5RDhSClmGg:zDezzfkId0o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=l5RDhSClmGg:zDezzfkId0o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=l5RDhSClmGg:zDezzfkId0o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=l5RDhSClmGg:zDezzfkId0o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=l5RDhSClmGg:zDezzfkId0o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/l5RDhSClmGg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/07/09/CodeGarden+09+Open+Space+Minutes+Space+2+Exception+Handling+In+Umbraco.aspx</feedburner:origLink></entry>
  <entry>
    <title>Store common AppSettings in the web.config and an external file (configSource vs. file)</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/thqtWSKca4k/Store+Common+AppSettings+In+The+Webconfig+And+An+External+File+ConfigSource+Vs+File.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,85926b92-9252-42bc-a240-3facb471656d.aspx</id>
    <published>2009-06-27T08:19:19.8784049+01:00</published>
    <updated>2009-06-27T08:19:19.8784049+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="Software/Visual Studio" label="Software/Visual Studio" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,SoftwareVisualStudio.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I've started using &lt;a href="http://www.west-wind.com/presentations/configurationclass/configurationclass.asp"&gt;Rick&#xD;
Strahl's wwAppConfiguration&lt;/a&gt; to allow easier access to application constants and&#xD;
one thing that's been bugging me is that it doesn't play nice with configSource -which&#xD;
we update with web deployment projects to specify Development/Staging/Live settings.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The issue is that when you set configSource on the appSettigns node, wwAppConfiguration&#xD;
doesn't correctly set the file's path and instead (when using the default settings)&#xD;
writes the new values within the &amp;lt;appSettings&amp;gt; node. The problem is then that&#xD;
ASP.Net complains that you cannot specify configSource and settings inside the &amp;lt;appSettings&amp;gt;&#xD;
node.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
After a little digging, it turns out that you can use "file" in place of "configSource"&#xD;
for the appSettings node (and sadly only the appSettings node) and it allows you to&#xD;
define values within the &amp;lt;appsettings&amp;gt; node and then override them with your&#xD;
external file. This is fantastic because you can store your "default" values in the&#xD;
web.config and then override some or all of them for your various environments.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The next issue you may run into is if you use web deployment projects, in which case&#xD;
you may get the following error: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
web.config(2): error WDP00001: section appSettings in "web.config" has 7&#xD;
elements but "config\STAGING-appSettings.config" has 19 elements. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
To work around this, you just need to untick the "Enforce matching section replacements"&#xD;
checkbox within the properties section and you're good to go!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://blogs.sitedoc.co.uk/tim/img/20090627-WebDeploymentProject.png" width="656" height="403"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I hope that helps someone!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=85926b92-9252-42bc-a240-3facb471656d"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_qbaoo9MRjGDHGwAmlrjrCQzmtg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_qbaoo9MRjGDHGwAmlrjrCQzmtg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_qbaoo9MRjGDHGwAmlrjrCQzmtg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_qbaoo9MRjGDHGwAmlrjrCQzmtg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=thqtWSKca4k:gFBxZoZov3E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=thqtWSKca4k:gFBxZoZov3E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=thqtWSKca4k:gFBxZoZov3E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=thqtWSKca4k:gFBxZoZov3E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=thqtWSKca4k:gFBxZoZov3E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=thqtWSKca4k:gFBxZoZov3E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=thqtWSKca4k:gFBxZoZov3E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/thqtWSKca4k" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/06/27/Store+Common+AppSettings+In+The+Webconfig+And+An+External+File+ConfigSource+Vs+File.aspx</feedburner:origLink></entry>
  <entry>
    <title>C# FileInfo.MoveTo Cannot create a file when that file already exists exception</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/W7e5zUshiHc/C+FileInfoMoveTo+Cannot+Create+A+File+When+That+File+Already+Exists+Exception.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,10ba51a5-14c9-47ac-a2f3-8b28e981103d.aspx</id>
    <published>2009-05-12T20:39:35.1672421+01:00</published>
    <updated>2009-05-12T20:39:35.1672421+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="C#" label="C#" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,C.aspx" />
    <category term="Development" label="Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Development.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
This was one of those irritating errors that you get when you're trying to do something&#xD;
quickly before you go home and you can't for the life of you fathom the issue. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I had the following code (simple enough):&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="code"&gt;&#xD;
          &lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;FileInfo&#xD;
f = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FileInfo(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;##&lt;/span&gt; &lt;span style="color: #800000"&gt;File's&lt;/span&gt; &lt;span style="color: #800000"&gt;Path&lt;/span&gt; &lt;span style="color: #800000"&gt;"&lt;/span&gt;); &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;br&gt;&lt;div style="display: none" id="closed633777574815880680_3"&gt;&lt;img onclick="showHideCodeDiv('633777574815880680_3', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif"&gt;&lt;/img&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: block" id="open633777574815880680_3"&gt;&lt;img onclick="showHideCodeDiv('633777574815880680_3', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif"&gt;&lt;/img&gt;{ &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;   &#xD;
f.MoveTo(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;##&lt;/span&gt; &lt;span style="color: #800000"&gt;DROP&lt;/span&gt; &lt;span style="color: #800000"&gt;OFF&lt;/span&gt; &lt;span style="color: #800000"&gt;DIRECTORY&lt;/span&gt; &lt;span style="color: #800000"&gt;##&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;)); &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif"&gt;&lt;/img&gt;}&#xD;
&lt;/div&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (&lt;span style="color: #008b8b"&gt;Exception&lt;/span&gt; e) &#xD;
&lt;br&gt;&lt;div style="display: none" id="closed633777574815880680_7"&gt;&lt;img onclick="showHideCodeDiv('633777574815880680_7', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif"&gt;&lt;/img&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: block" id="open633777574815880680_7"&gt;&lt;img onclick="showHideCodeDiv('633777574815880680_7', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif"&gt;&lt;/img&gt;{ &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;    &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;Log&lt;/span&gt; &lt;span style="color: #008000"&gt;the&lt;/span&gt; &lt;span style="color: #008000"&gt;exception&lt;/span&gt; &lt;span style="color: #008000"&gt;here&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif"&gt;&lt;/img&gt;}&#xD;
&lt;/div&gt;&lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
The fix was simple, you just have to remember to specify the new filename too. (DOH!).&#xD;
Here's the "correct" code.&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="code"&gt;&#xD;
          &lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;FileInfo&#xD;
f = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FileInfo(&lt;span style="color: #800000"&gt;"##&#xD;
File's Path&lt;/span&gt; &lt;span style="color: #800000"&gt;"&lt;/span&gt;); &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;br&gt;&lt;div style="display: none" id="closed633777574273676465_3"&gt;&lt;img onclick="showHideCodeDiv('633777574273676465_3', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif"&gt;&lt;/img&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: block" id="open633777574273676465_3"&gt;&lt;img onclick="showHideCodeDiv('633777574273676465_3', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif"&gt;&lt;/img&gt;{ &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;   &#xD;
f.MoveTo(Path.Combine(&lt;span style="color: #800000"&gt;"## DROP OFF DIRECTORY ##"&lt;/span&gt;,&#xD;
f.Name)); &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif"&gt;&lt;/img&gt;}&#xD;
&lt;/div&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (&lt;span style="color: #008b8b"&gt;Exception&lt;/span&gt; e) &#xD;
&lt;br&gt;&lt;div style="display: none" id="closed633777574273676465_7"&gt;&lt;img onclick="showHideCodeDiv('633777574273676465_7', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif"&gt;&lt;/img&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: block" id="open633777574273676465_7"&gt;&lt;img onclick="showHideCodeDiv('633777574273676465_7', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif"&gt;&lt;/img&gt;{ &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;    &lt;span style="color: #008000"&gt;//Log&#xD;
the exception here&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif"&gt;&lt;/img&gt;}&#xD;
&lt;/div&gt;&lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
Hope that helps you out ;)&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=10ba51a5-14c9-47ac-a2f3-8b28e981103d"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t26Wk7-sDgM7r5ophsQw7M_LI6g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t26Wk7-sDgM7r5ophsQw7M_LI6g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t26Wk7-sDgM7r5ophsQw7M_LI6g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t26Wk7-sDgM7r5ophsQw7M_LI6g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=W7e5zUshiHc:PO8RNUExRNU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=W7e5zUshiHc:PO8RNUExRNU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=W7e5zUshiHc:PO8RNUExRNU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=W7e5zUshiHc:PO8RNUExRNU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=W7e5zUshiHc:PO8RNUExRNU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=W7e5zUshiHc:PO8RNUExRNU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=W7e5zUshiHc:PO8RNUExRNU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/W7e5zUshiHc" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/05/12/C+FileInfoMoveTo+Cannot+Create+A+File+When+That+File+Already+Exists+Exception.aspx</feedburner:origLink></entry>
  <entry>
    <title>Fix missing JavaScript file when you rename the Umbraco admin directory</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/i8TqQ3HQhJA/Fix+Missing+JavaScript+File+When+You+Rename+The+Umbraco+Admin+Directory.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,cf6f0226-db49-460d-8de9-7ab3075d6e84.aspx</id>
    <published>2009-04-28T18:49:48.2190434+01:00</published>
    <updated>2009-04-28T18:56:49.0913498+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="Security" label="Security" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Security.aspx" />
    <category term="The Site Doctor" label="The Site Doctor" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,TheSiteDoctor.aspx" />
    <category term="Umbraco" label="Umbraco" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Umbraco.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;h2&gt;The Error&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
For those of you who have tried to rename your Umbraco installation directory to something&#xD;
other than the default /umbraco/ you'll have found that TreeInit.aspx throws a JavaScript&#xD;
error along the lines of:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Message: Object expected &#xD;
&lt;br&gt;&#xD;
Line: 1 &#xD;
&lt;br&gt;&#xD;
Char: 4236 &#xD;
&lt;br&gt;&#xD;
Code: 0 &#xD;
&lt;br&gt;&#xD;
URI: http://www.yourdomain.co.uk/youradmindirector/js/xloadtree.js&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
As this only really affects the refresh of the tree/close of a couple of dialogues&#xD;
I've not bothered fixing it but basically the issue is outlined well here: &lt;a href="http://tinyurl.com/cx9atv"&gt;http://tinyurl.com/cx9atv&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;h2&gt;The Fix&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
If you're using extension less URLs already then it's easy as pie to sort:&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
Open your UrlRewriting config file (/config/UrlRewriting.config) &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Add this above "&amp;lt;/rewrites&amp;gt;": &#xD;
&lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;div class="code"&gt;&#xD;
          &lt;div style="display: none"&gt;&#xD;
            &lt;img onclick="showHideCodeDiv('633765388075525066_1', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif"&gt;&lt;/img&gt;&#xD;
            &lt;b&gt;&#xD;
              &lt;span style="color: #00008b"&gt;&amp;lt;...&amp;gt;&lt;/span&gt;&#xD;
            &lt;/b&gt;&#xD;
          &lt;/div&gt;&#xD;
          &lt;div style="display: block" id="open633765388075525066_1"&gt;&#xD;
            &lt;img onclick="showHideCodeDiv('633765388075525066_1', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif"&gt;&lt;/img&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #8b0000"&gt;add&lt;/span&gt;&#xD;
            &lt;span style="color: #ff0000"&gt; name&lt;/span&gt;&#xD;
            &lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;"missingjs"&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;&lt;span style="color: #ff0000"&gt;   &#xD;
virtualUrl&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"^~/##&#xD;
YOUR ADMIN DIRECTORY GOES HERE ##_client/ui/(.*).js"&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;&lt;span style="color: #ff0000"&gt;   &#xD;
rewriteUrlParameter&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"ExcludeFromClientQueryString"&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;&lt;span style="color: #ff0000"&gt;   &#xD;
destinationUrl&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"~/umbraco_client/ui/$1.js"&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif"&gt;&lt;/img&gt;&lt;span style="color: #ff0000"&gt;   &#xD;
ignoreCase&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"true"&lt;/span&gt; &lt;span style="color: #8b0000"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
If you've not already using extension less URLs don't panic, that's easy to setup&#xD;
you can &lt;a href="http://www.urlrewriting.net/160/en/documentation.html"&gt;read all about&#xD;
it here&lt;/a&gt;. Alternatively you could just copy the js files from one folder to another&#xD;
;)&#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;The Why&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
I don't know how many people already rename their admin dir from something else but&#xD;
as Umbraco becomes a more popular choice of &#xD;
&lt;abbr title="Content Management System"&gt;&#xD;
CMS&#xD;
&lt;/abbr&gt;&#xD;
you really should consider hiding the folder (the more popular it becomes, the more&#xD;
people will become more familiar with the default admin directory of /umbraco/).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Although there hasn't yet been a breach (&lt;abbr title="As Far As I Am Aware"&gt;&#xD;
AFAIAA&#xD;
&lt;/abbr&gt;&#xD;
) if a vulnerability is found, the first step in prevention is obfuscation -hide your&#xD;
admin directory! A &lt;a href="http://www.google.co.uk/search?q=username+login+inurl%3Aadmin.asp"&gt;quick&#xD;
Google search&lt;/a&gt; will show you how easy some developers have made it for you to &lt;a href="http://www.google.co.uk/search?q=username+login+inurl%3Aadmin.asp"&gt;find&#xD;
their admin sites&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=cf6f0226-db49-460d-8de9-7ab3075d6e84"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Q32BcTDIx6Dq22rJyz9CwtIERrM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q32BcTDIx6Dq22rJyz9CwtIERrM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Q32BcTDIx6Dq22rJyz9CwtIERrM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q32BcTDIx6Dq22rJyz9CwtIERrM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=i8TqQ3HQhJA:CEo3ZpNrseQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=i8TqQ3HQhJA:CEo3ZpNrseQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=i8TqQ3HQhJA:CEo3ZpNrseQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=i8TqQ3HQhJA:CEo3ZpNrseQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=i8TqQ3HQhJA:CEo3ZpNrseQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=i8TqQ3HQhJA:CEo3ZpNrseQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=i8TqQ3HQhJA:CEo3ZpNrseQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/i8TqQ3HQhJA" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/04/28/Fix+Missing+JavaScript+File+When+You+Rename+The+Umbraco+Admin+Directory.aspx</feedburner:origLink></entry>
  <entry>
    <title>Maplin loses it’s way with it’s GPS</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/nruwJt9umeg/Maplin+Loses+Its+Way+With+Its+GPS.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,bfd673af-acda-4a77-ab28-5ac32f49164d.aspx</id>
    <published>2009-04-25T12:17:48.5058815+01:00</published>
    <updated>2009-04-25T12:17:48.5058815+01:00</updated>
    <category term="Business" label="Business" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Business.aspx" />
    <category term="Marketing" label="Marketing" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Marketing.aspx" />
    <category term="Marketing/Email" label="Marketing/Email" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,MarketingEmail.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
This came through in my email today and it made me smile:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://blogs.sitedoc.co.uk/tim/img/2009-04-25_1211.png" width="280" height="317"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=bfd673af-acda-4a77-ab28-5ac32f49164d"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/42XS7S_CIKtAlgG0bonjJlsNk5Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/42XS7S_CIKtAlgG0bonjJlsNk5Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/42XS7S_CIKtAlgG0bonjJlsNk5Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/42XS7S_CIKtAlgG0bonjJlsNk5Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=nruwJt9umeg:eKrpRvLVuPc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=nruwJt9umeg:eKrpRvLVuPc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=nruwJt9umeg:eKrpRvLVuPc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=nruwJt9umeg:eKrpRvLVuPc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=nruwJt9umeg:eKrpRvLVuPc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=nruwJt9umeg:eKrpRvLVuPc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=nruwJt9umeg:eKrpRvLVuPc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/nruwJt9umeg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/04/25/Maplin+Loses+Its+Way+With+Its+GPS.aspx</feedburner:origLink></entry>
  <entry>
    <title>Quick ASP.Net tip: Half your page size in ASP.Net instantly</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/X17VdmyLQAo/Quick+ASPNet+Tip+Half+Your+Page+Size+In+ASPNet+Instantly.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,d1197af5-d41e-4cc0-85d5-8b12289fa009.aspx</id>
    <published>2009-04-17T15:53:05.1996566+01:00</published>
    <updated>2009-04-27T11:47:43.2491492+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="C#" label="C#" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,C.aspx" />
    <category term="Development" label="Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Development.aspx" />
    <category term="The Site Doctor" label="The Site Doctor" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,TheSiteDoctor.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Ok it might be a little less than half side but it's near enough. I've been sitting&#xD;
on this for a while and needed to reference it for someone so I thought I'd post quickly&#xD;
about it. One of the most common complaints about .Net is that you have a lot of hidden&#xD;
"content" by the way of hidden inputs and the likes throughout your site. This can&#xD;
easily get corrupt on postback/slowdown the page load times etc.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Really you should be optimising each control on the page (enabling/disabling where&#xD;
relevant) but if you want to cheat (lets face it, we all do):&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
Download the files: &lt;a href="http://blogs.thesitedoctor.co.uk/tim/files/PageStateAdapterv1.0.zip"&gt;PageStateAdapterv1.0.zip&#xD;
(3KB)&lt;/a&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Put PageStateAdapter.browser into your /App_Browsers/ folder (or create one and add&#xD;
it) &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Put TSDPageStateAdapter.dll into your website's /bin/ folder &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Load up your website and checkout your ViewState :) &#xD;
&lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;p&gt;&#xD;
Incase you're interested in the source for it:&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="code"&gt;&#xD;
          &lt;h2&gt;PageStateAdapter.browser&#xD;
&lt;/h2&gt;&#xD;
          &lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;&#xD;
          &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&#xD;
          &lt;span style="color: #8b0000"&gt;browsers&lt;/span&gt;&#xD;
          &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;browser&lt;/span&gt;&lt;span style="color: #ff0000"&gt; refID&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Default&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;controlAdapters&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;adapter&lt;/span&gt;&lt;span style="color: #ff0000"&gt; controlType&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;System.Web.UI.Page&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; adapterType&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;TheSiteDoctor.PageStateAdapter.PageStateAdapter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt; &lt;span style="color: #8b0000"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/controlAdapters&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;capabilities&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;capability&lt;/span&gt;&lt;span style="color: #ff0000"&gt; name&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;requiresControlStateInSession&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; value&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt; &lt;span style="color: #8b0000"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/capabilities&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/browser&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/browsers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&#xD;
        &lt;div class="code"&gt;&#xD;
          &lt;h2&gt;PageStateAdapter.cs&#xD;
&lt;/h2&gt;&#xD;
          &lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;&#xD;
          &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Web.UI; &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif"&gt;&lt;/img&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; TheSiteDoctor.PageStateAdapter &#xD;
&lt;br&gt;&lt;div style="display: none" id="closed633755787600153334_4"&gt;&lt;img onclick="showHideCodeDiv('633755787600153334_4', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif"&gt;&lt;/img&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: block" id="open633755787600153334_4"&gt;&lt;img onclick="showHideCodeDiv('633755787600153334_4', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif"&gt;&lt;/img&gt;{ &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;public&#xD;
class&lt;/span&gt; PageStateAdapter : System.Web.UI.Adapters.PageAdapter &#xD;
&lt;br&gt;&lt;div style="display: none" id="closed633755787600153334_6"&gt;&lt;img onclick="showHideCodeDiv('633755787600153334_6', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif"&gt;&lt;/img&gt;    &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: block" id="open633755787600153334_6"&gt;&lt;img onclick="showHideCodeDiv('633755787600153334_6', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif"&gt;&lt;/img&gt;   &#xD;
{ &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;public&#xD;
override&lt;/span&gt; PageStatePersister GetStatePersister() &#xD;
&lt;br&gt;&lt;div style="display: none" id="closed633755787600153334_8"&gt;&lt;img onclick="showHideCodeDiv('633755787600153334_8', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif"&gt;&lt;/img&gt;        &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: block" id="open633755787600153334_8"&gt;&lt;img onclick="showHideCodeDiv('633755787600153334_8', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif"&gt;&lt;/img&gt;       &#xD;
{ &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif"&gt;&lt;/img&gt;            &lt;span style="color: #0000ff"&gt;return&#xD;
new&lt;/span&gt; SessionPageStatePersister(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Page); &#xD;
&lt;br&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif"&gt;&lt;/img&gt;       &#xD;
}&#xD;
&lt;/div&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif"&gt;&lt;/img&gt;   &#xD;
}&#xD;
&lt;/div&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif"&gt;&lt;/img&gt;}&#xD;
&lt;/div&gt;&lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
The best example of how much this reduces ViewState by is when you add a large DataGrid&#xD;
to your site.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Post files: &lt;a href="http://blogs.thesitedoctor.co.uk/tim/files/PageStateAdapterv1.0.zip"&gt;PageStateAdapterv1.0.zip&#xD;
(3KB)&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Update:&lt;/strong&gt; Apologies to those of you who downloaded and found it wouldn't&#xD;
compile, the .browser file was a little off (missing the second "PageStateAdapter").&#xD;
I've updated it and changed the zip file download. Enjoy!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=d1197af5-d41e-4cc0-85d5-8b12289fa009"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y3sNTpSgV6cG9KI1M_q3ZpIEykc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y3sNTpSgV6cG9KI1M_q3ZpIEykc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y3sNTpSgV6cG9KI1M_q3ZpIEykc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y3sNTpSgV6cG9KI1M_q3ZpIEykc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=X17VdmyLQAo:jsMt408Xnzw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=X17VdmyLQAo:jsMt408Xnzw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=X17VdmyLQAo:jsMt408Xnzw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=X17VdmyLQAo:jsMt408Xnzw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=X17VdmyLQAo:jsMt408Xnzw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=X17VdmyLQAo:jsMt408Xnzw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=X17VdmyLQAo:jsMt408Xnzw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/X17VdmyLQAo" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/04/17/Quick+ASPNet+Tip+Half+Your+Page+Size+In+ASPNet+Instantly.aspx</feedburner:origLink></entry>
  <entry>
    <title>Visual Studio Tip of the day: Open files/folders in Windows Explorer</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/iWDmnyKZ9Mo/Visual+Studio+Tip+Of+The+Day+Open+Filesfolders+In+Windows+Explorer.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,f5dcc54e-dfbc-4f79-8bfa-0deeb31902d2.aspx</id>
    <published>2009-03-02T11:09:25.7018627+00:00</published>
    <updated>2009-03-02T11:16:15.2148668+00:00</updated>
    <category term="Productivity" label="Productivity" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Productivity.aspx" />
    <category term="Software/Visual Studio" label="Software/Visual Studio" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,SoftwareVisualStudio.aspx" />
    <category term="The Site Doctor" label="The Site Doctor" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,TheSiteDoctor.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
A little irritation/time consuming process when you're working with multiple projects&#xD;
on multiple drives/SVN repos/directories is to open the current file's location within&#xD;
Windows Explorer. If you weren't already aware, you can do this from most projects/files&#xD;
by right clicking on the project in the solution browser:&#xD;
&lt;/p&gt;&#xD;
        &lt;img height="95" src="http://blogs.thesitedoctor.co.uk/tim/img/OpenWindowsExplorerContext.png" width="236"&gt;&lt;/img&gt;&#xD;
        &lt;p&gt;&#xD;
Problem for me (and my mate Chris) is that not only is it just for the Project Item&#xD;
but more importantly it means using the mouse -which is something I'm trying to avoid&#xD;
as much as possible. Then I stumbled across a couple of posts which suggested &lt;a href="http://www.neilpullinger.co.uk/2008/03/open-visual-studio-project-folder-in.html"&gt;opening&#xD;
Windows Explorer&lt;/a&gt;&lt;a href="http://www.beyondweblogs.com/post/Open-Windows-Explorer-(with-current-project-files)-in-Visual-Studio-Tools-menu.aspx"&gt;with&#xD;
Visual Studio's&lt;/a&gt; External Tools dialog.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
They're both great ideas but you still need to use the mouse so I thought I'd take&#xD;
the final step and wire up some keyboard shortcuts. I'll recap the process here as&#xD;
I've added/grouped a few of their settings.&#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;Creating the "External Tools"&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
There's a little productivity tip here for setting the folder in question the root&#xD;
of Windows Explorer, this encourages you to focus on just the work in question (though&#xD;
it can be a little irritating sometimes so I may "undo" this change later.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Custom #1: Open the current solution item in Windows Explorer&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Title:&lt;/strong&gt; Windows Explorer - Item &#xD;
&lt;br&gt;&lt;strong&gt;Command:&lt;/strong&gt; explorer.exe &#xD;
&lt;br&gt;&lt;strong&gt;Arguments:&lt;/strong&gt; /select,"$(ItemPath)"&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Custom #2: Open the current Visual Studio project in Windows Explorer&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Title:&lt;/strong&gt; Windows Explorer - Project Directory &#xD;
&lt;br&gt;&lt;strong&gt;Command:&lt;/strong&gt; explorer.exe &#xD;
&lt;br&gt;&lt;strong&gt;Arguments:&lt;/strong&gt; /root,"$(ProjectDir)"&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Custom #3: Open the current Visual Studio solution in Windows Explorer&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
We've got a number of projects that have useful files/folders stored in the same folder&#xD;
as the solution file so this one's useful to get quick access to them, I think I'll&#xD;
use this one a lot when dealing with SVN.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Title:&lt;/strong&gt; Windows Explorer - Solution Directory &#xD;
&lt;br&gt;&lt;strong&gt;Command:&lt;/strong&gt; explorer.exe &#xD;
&lt;br&gt;&lt;strong&gt;Arguments:&lt;/strong&gt; /root,"$(SolutionDir)"&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Custom #4: Open the current solution's binary (bin) directory in Windows Explorer&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Useful when you want to get access to the dll i.e. to copy to another folder/upload&#xD;
just the dll to a website.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Title:&lt;/strong&gt; Windows Explorer - Binary Directory &#xD;
&lt;br&gt;&lt;strong&gt;Command:&lt;/strong&gt; explorer.exe &#xD;
&lt;br&gt;&lt;strong&gt;Arguments:&lt;/strong&gt; "$(TargetDir)"&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Custom #5: Open the current solution's target build directory in Windows Explorer&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
This is useful when you have a project that builds to another directory (i.e. a common&#xD;
DLL directory, I'm not sure how many people do this but I've got a couple of projects&#xD;
that do this so I thought I'd share it).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Title:&lt;/strong&gt; Windows Explorer - Target Directory &#xD;
&lt;br&gt;&lt;strong&gt;Command:&lt;/strong&gt; explorer.exe &#xD;
&lt;br&gt;&lt;strong&gt;Arguments:&lt;/strong&gt; "$(BinDir)"&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In all instances you can leave the &lt;strong&gt;Initial Directory&lt;/strong&gt; field empty.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Note:&lt;/strong&gt; On a couple of the directory related commands I've set the&#xD;
"/root" argument, this is a useful little productivity tip I learn a while ago to&#xD;
stop you navigating away from your work. Irritatingly I've not found a way of using&#xD;
the /select and /root commands together. It would also be nice to say "Open the bin&#xD;
folder and set the root to the project folder" but again I've not found a way.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you're interested in the arguments I'm using there, check out the &lt;a href="http://support.microsoft.com/kb/307856"&gt;Microsoft&#xD;
Support article about How To Customize the Windows Explorer Views in Windows XP&lt;/a&gt; (these&#xD;
also work in Vista). Alternatively you can read more about the &lt;a href="http://msdn.microsoft.com/en-us/library/c02as0cs.aspx"&gt;Visual&#xD;
Studio macros for build commands here&lt;/a&gt; (some of which are global I believe). I'm&#xD;
interested to see the use of $(TargetDir) as although it'll be useful for non-web&#xD;
projects, however using &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/01/28/vs-2008-web-deployment-project-support-released.aspx"&gt;Web&#xD;
Deployment Projects&lt;/a&gt; might make it irrelevant for you.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
You should now have 5 new items in your Tools' toolbar:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="187" src="http://blogs.thesitedoctor.co.uk/tim/img/NewToolsMenu_001.png" width="290"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h2&gt;Wire up the keyboard shortcuts&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
As mentioned earlier, I want keyboard shortcuts but if you want toolbar icons, you&#xD;
should checkout the &lt;a href="http://www.neilpullinger.co.uk/2008/03/open-visual-studio-project-folder-in.html"&gt;end&#xD;
of this post&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Open up the Keyboard settings within the Visual Studio Option dialog (Tools -&amp;gt;&#xD;
Options -&amp;gt; Environment -&amp;gt; Keyboard) -you may need to select the "Show all settings"&#xD;
checkbox in the bottom left of the Options dialog to see the Keyboard option.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In the &lt;strong&gt;Show commands containing&lt;/strong&gt; field enter "Tools.ExternalCommand"&#xD;
to list the set of commands, irritatingly it just labels each command as "Tools.ExternalCommand#"&#xD;
for each command so this bit will require a little thinking on your behalf. My commands&#xD;
are #2-6 (#1 is the Dotfuscator Community Edition command).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I would then wire up the following shortcuts (I've set them up Globally for convenience):&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;&#xD;
            &lt;em&gt;Tools.ExternalCommand2&lt;/em&gt; (Current Item):&lt;/strong&gt; Ctrl+E, I &#xD;
&lt;br&gt;&lt;strong&gt;&lt;em&gt;Tools.ExternalCommand3&lt;/em&gt; (Current Project):&lt;/strong&gt; Ctrl+E, P &#xD;
&lt;br&gt;&lt;strong&gt;&lt;em&gt;Tools.ExternalCommand4&lt;/em&gt; (Current Solution):&lt;/strong&gt; Ctrl+E, S &#xD;
&lt;br&gt;&lt;strong&gt;&lt;em&gt;Tools.ExternalCommand5&lt;/em&gt; (Bin dir):&lt;/strong&gt; Ctrl+E, B &#xD;
&lt;br&gt;&lt;strong&gt;&lt;em&gt;Tools.ExternalCommand6&lt;/em&gt; (Target dir):&lt;/strong&gt; Ctrl+E, T&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="428" src="http://blogs.thesitedoctor.co.uk/tim/img/KeyboardShortcuts.png" width="747"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
To enter these shortcuts simply press the first combination (in this case Ctrl+E),&#xD;
then press the second key (I -item, P -project, S -solution, B -binary, T -target).&#xD;
I found that a couple of these were already wired up to ReSharper and Pex which is&#xD;
a pain but I don't tend to use those particular shortcuts so I just overrode them&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now you should be able to press Ctrl+E followed by I and get your current item in&#xD;
Explorer.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It'd be nice if I could get it to use a single instance of Explorer and just refocus&#xD;
the items (on another key combo as that's not always the desired action).&#xD;
&lt;/p&gt;&#xD;
        &lt;strong&gt;Update:&lt;/strong&gt; After using it a little, I've noticed that in my projects,&#xD;
I had the Bin/TargetDir the wrong way around (now corrected).&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=f5dcc54e-dfbc-4f79-8bfa-0deeb31902d2"&gt;&lt;/img&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7S5Lbhgs4GznRrOelx9Jxl6SNOA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7S5Lbhgs4GznRrOelx9Jxl6SNOA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7S5Lbhgs4GznRrOelx9Jxl6SNOA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7S5Lbhgs4GznRrOelx9Jxl6SNOA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=iWDmnyKZ9Mo:RTclAM2_tTY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=iWDmnyKZ9Mo:RTclAM2_tTY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=iWDmnyKZ9Mo:RTclAM2_tTY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=iWDmnyKZ9Mo:RTclAM2_tTY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=iWDmnyKZ9Mo:RTclAM2_tTY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=iWDmnyKZ9Mo:RTclAM2_tTY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=iWDmnyKZ9Mo:RTclAM2_tTY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/iWDmnyKZ9Mo" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/03/02/Visual+Studio+Tip+Of+The+Day+Open+Filesfolders+In+Windows+Explorer.aspx</feedburner:origLink></entry>
  <entry>
    <title>Advanced Error Reporting in Umbraco, dasBlog and other ASP.Net sites</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/luz7zPdNjX4/Advanced+Error+Reporting+In+Umbraco+DasBlog+And+Other+ASPNet+Sites.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,c66c1f56-d28a-45a5-98c6-1d8400dc272e.aspx</id>
    <published>2009-02-27T15:51:13.4818106+00:00</published>
    <updated>2009-02-27T15:59:53.0153852+00:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="ASP.Net/Error Reporting" label="ASP.Net/Error Reporting" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNetErrorReporting.aspx" />
    <category term="dasBlog" label="dasBlog" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,dasBlog.aspx" />
    <category term="Umbraco" label="Umbraco" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Umbraco.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
If you've been following my blog you'll know that I've been raving about error reporting&#xD;
within ASP.Net (you can see my &lt;a title="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNetErrorReporting.aspx" href="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNetErrorReporting"&gt;ASP.Net&#xD;
Error Reporting category&lt;/a&gt; for a couple of them if you like) but until now it's&#xD;
been limited to those sites that you have access to the global.asax file.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One of the irritations I've found with Umbraco and dasBlog is that I don't get notified&#xD;
of errors as they're just logged to a text file/database somewhere. This is fine if&#xD;
you run 2 or 3 sites but we manage too many to check them all everyday. Instead we&#xD;
rely on email error notifications which until today have been a PITA to integrate&#xD;
into Umbraco.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Today I'd like to introduce to you &lt;a title="http://blogs.thesitedoctor.co.uk/tim/files/ErrorHandling_v2.0.zip" href="http://blogs.thesitedoctor.co.uk/tim/files/ErrorHandling_v2.0.zip"&gt;Error&#xD;
Handling v2.0&lt;/a&gt; which instead of relying on the global.asax file for the error hooks,&#xD;
uses a HttpModule which means you can install it into &lt;strong&gt;any existing/pre-built&#xD;
application&lt;/strong&gt; such as Umbraco and dasBlog.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Adding it into the site is simple, you'll need to install the module into the web.config&#xD;
file and add the configuration section a sample (cut down) web.config is below:&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="code"&gt;&#xD;
          &lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;&#xD;
          &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&#xD;
          &lt;span style="color: #8b0000"&gt;?xml&lt;/span&gt;&#xD;
          &lt;span style="color: #ff0000"&gt; version&lt;/span&gt;&#xD;
          &lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&#xD;
          &lt;span style="color: #0000ff"&gt;"1.0"&lt;/span&gt;&#xD;
          &lt;span style="color: #8b0000"&gt;?&lt;/span&gt;&#xD;
          &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;configSections&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;section&lt;/span&gt;&lt;span style="color: #ff0000"&gt; name&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"tsdErrorsConfigSection"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; allowExeDefinition&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"MachineToApplication"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; restartOnExternalChanges&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"true"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; type&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"System.Configuration.NameValueFileSectionHandler,&#xD;
System,&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Version=2.0.0.0, Culture=neutral,&#xD;
PublicKeyToken=b77a5c561934e089"&lt;/span&gt; &lt;span style="color: #8b0000"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/configSections&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;tsdErrorsConfigSection&lt;/span&gt;&lt;span style="color: #ff0000"&gt; file&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"ErrorHandling.config"&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;system.net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;mailSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;smtp&lt;/span&gt;&lt;span style="color: #ff0000"&gt; from&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"you@yourdomain.com"&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;network&lt;/span&gt;&lt;span style="color: #ff0000"&gt; host&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"127.0.0.1"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; port&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"25"&lt;/span&gt; &lt;span style="color: #8b0000"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/smtp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/mailSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/system.net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;system.web&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;httpModules&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;add&lt;/span&gt;&lt;span style="color: #ff0000"&gt; name&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"ErrorModule"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; type&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"TheSiteDoctor.ErrorHandling.ErrorModule,&#xD;
TheSiteDoctor.ErrorHandling&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"&lt;/span&gt; &lt;span style="color: #8b0000"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/httpModules&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/system.web&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;&lt;br&gt;&lt;div id="closed633713471312892682_23" style="display: none"&gt;&lt;img onclick="showHideCodeDiv('633713471312892682_23', false)" alt="" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" align="top"&gt;&lt;/img&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;&amp;lt;!--...--&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div id="open633713471312892682_23" style="display: block"&gt;&lt;img onclick="showHideCodeDiv('633713471312892682_23', true)" alt="" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" align="top"&gt;&lt;/img&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;   &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top"&gt;&lt;/img&gt;&lt;span style="color: #008000"&gt;IIS&#xD;
7 Settings&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top"&gt;&lt;/img&gt;    &lt;span style="color: #008000"&gt;&amp;lt;system.webServer&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top"&gt;&lt;/img&gt;        &lt;span style="color: #008000"&gt;&amp;lt;validation&#xD;
validateIntegratedModeConfiguration="false" /&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top"&gt;&lt;/img&gt;        &lt;span style="color: #008000"&gt;&amp;lt;modules&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top"&gt;&lt;/img&gt;            &lt;span style="color: #008000"&gt;&amp;lt;add&#xD;
name="ErrorModule" type="TheSiteDoctor.ErrorHandling.ErrorModule, TheSiteDoctor.ErrorHandling"&#xD;
/&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top"&gt;&lt;/img&gt;        &lt;span style="color: #008000"&gt;&amp;lt;/modules&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top"&gt;&lt;/img&gt;    &lt;span style="color: #008000"&gt;&amp;lt;/system.webServer&amp;gt;&lt;/span&gt;  &#xD;
&lt;br&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top"&gt;&lt;/img&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;img alt="" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top"&gt;&lt;/img&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
Then you'll need to check all the settings -I recommend storing these in another .config&#xD;
file for clarities sake. Make sure you've configured your SMTP settings and you should&#xD;
be good to go.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you want to test your settings, I've included a test page for you that will check&#xD;
your settings and show you the defaults if you've not set them. I've got this running&#xD;
now on a couple of Umbraco and dasBlog installs without an issue.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
There's also a useful logging system in it which I'll look to overview in a later&#xD;
post but if you want to see it, check out the included aspx file.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="http://blogs.thesitedoctor.co.uk/tim/files/ErrorHandling_v2.0.zip" href="http://blogs.thesitedoctor.co.uk/tim/files/ErrorHandling_v2.0.zip"&gt;Download&#xD;
ErrorHandling_v2.0.zip (25Kb)&lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you do use this code I'd be interested to hear how you get on, I think it requires&#xD;
a little more refinement un some areas but it's pretty robust.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Enjoy.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=c66c1f56-d28a-45a5-98c6-1d8400dc272e"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6CeLsCHVuyZWJa0IiuQLVyhH-PM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6CeLsCHVuyZWJa0IiuQLVyhH-PM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6CeLsCHVuyZWJa0IiuQLVyhH-PM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6CeLsCHVuyZWJa0IiuQLVyhH-PM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=luz7zPdNjX4:9eUCEojgYa0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=luz7zPdNjX4:9eUCEojgYa0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=luz7zPdNjX4:9eUCEojgYa0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=luz7zPdNjX4:9eUCEojgYa0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=luz7zPdNjX4:9eUCEojgYa0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=luz7zPdNjX4:9eUCEojgYa0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=luz7zPdNjX4:9eUCEojgYa0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/luz7zPdNjX4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/02/27/Advanced+Error+Reporting+In+Umbraco+DasBlog+And+Other+ASPNet+Sites.aspx</feedburner:origLink></entry>
  <entry>
    <title>No hidden charges</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/timgaunt/~3/MsiTGf2YOW8/No+Hidden+Charges.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,4dba065d-987d-43c3-a899-0c71e5f652b7.aspx</id>
    <published>2009-02-25T18:36:42.0188213+00:00</published>
    <updated>2009-02-25T18:36:42.0188213+00:00</updated>
    <category term="Business" label="Business" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Business.aspx" />
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://blogs.sitedoc.co.uk/tim/img/NoExtraCharge.png" align="right"&gt;&lt;/img&gt;I've&#xD;
had a couple of situations recently where clients have suggesting "tricking" the user&#xD;
into either remaining subscribed to a service i.e. a mailing list or rammed some sales&#xD;
info down their throat whereas we advise to go the oposite direction -if someone doesn't&#xD;
want to read your email, why pay to send it to them? Just because you send it to them,&#xD;
doesn't mean they're going to read it.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Then while booking some tickets this evening I came across FlyThomson's take on it.&#xD;
I was going to blog how I thought their prices were reasonable, or how their checkout&#xD;
process upsold well etc but instead I get to the very last stage and after having&#xD;
"Still no change, the seats are the same price"!"/"The price you see is the price&#xD;
you pay" throughout I noticed that when selection any form of "grown up" payment card&#xD;
I get charged £10!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The only cards it turns out that don't charge you are Solo and Visa Electron. So much&#xD;
for the "Still no change."&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Why try and bamboozle your customer? Ok I had to pay it but I wouldn't now recommend&#xD;
you.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &lt;img height="159" src="http://blogs.thesitedoctor.co.uk/tim/img/CardCharge.png" width="487"&gt;&lt;/img&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Thanks. Why didn't you state that at the start?&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=4dba065d-987d-43c3-a899-0c71e5f652b7"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/taqIdsFc_b-ElM-L48ALPTlZkL4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/taqIdsFc_b-ElM-L48ALPTlZkL4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/taqIdsFc_b-ElM-L48ALPTlZkL4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/taqIdsFc_b-ElM-L48ALPTlZkL4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=MsiTGf2YOW8:RcFUX1eAr7A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=MsiTGf2YOW8:RcFUX1eAr7A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=MsiTGf2YOW8:RcFUX1eAr7A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=MsiTGf2YOW8:RcFUX1eAr7A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=MsiTGf2YOW8:RcFUX1eAr7A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?i=MsiTGf2YOW8:RcFUX1eAr7A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/timgaunt?a=MsiTGf2YOW8:RcFUX1eAr7A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/timgaunt?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/timgaunt/~4/MsiTGf2YOW8" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blogs.thesitedoctor.co.uk/tim/2009/02/25/No+Hidden+Charges.aspx</feedburner:origLink></entry>
</feed>
