Here's a problem - most likely specific to me - that bit me today. Actually it probably did a few days ago when I installed the .NET 3.5 runtime, except I didn't know it until today <g>.
I've been running on Beta 2 of .NET 3.5 for some time during development. I've pretty much done all of my development with Visual Studio 2008 although I've been using .NET 2.0 specific code all along. However, Beta 2 also installed .NET 2.0 SP1 which at the time included one small issue that broke my code: In Beta 2 a HtmlTableBodySection control was introduced to the Web controls in ASP.NET and this difference made it impossible to run a .NET 2.0 SP1 compiled app to run on a plain 2.0 system. At the time I actually ended up installing the 3.5 runtime on my server to get around this issue and to ensure that the runtime would behave the same way there as it did in my development environment
Today I got a note from several customers telling me they couldn't order from my West Wind Web Store and sure enough as soon as I checked this out I found that my code still contains the following:
/// <summary>
/// ShippingAddressDisplay control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableBodySection ShippingAddressDisplay;
in the generated CodeBehind file.
Microsoft actually 'fixed' the incompatibility with the HtmlTableBodySection in RTM of .NET 3.5 so this new control no longer exists. As it happens though because I didn't recompile my code it in effect broke my app... Argh.
No big deal, but this might bite some of you who have been running Beta 2 of .NET 3.5 and have used <table runat="server"> tags (or tr/td) in your markup which triggered the HtmlTableBodySection to be injected into the markup.
It's a price to pay for screwing around with Beta code in production <g>, but I'm still glad that I did otherwise this runtime change may have slipped through into RTM. In fact, I was wondering a few days ago when I installed .NET 3.5 RTM why the heck I had actually installed the Beta runtimes on the server, since I haven't been running any 3.5 specific code on my live site - well now I remember: It was to get around this particular issue in the .NET 2.0 SP1 runtimes at the time that were mismatched.
Moral of the story: When installing new runtimes and upgrading from beta versions always recompile applications to ensure that any minor changes are accounted for. In my case all it took is to recompile the application and the compiler immediately found the type mismatch for the HtmlTableBodySection which isn't present in the release 2.0 SP1 runtimes. Fixing the issue was a little trickier and required removing the runat=server tag, saving and then re-adding it.
All's well now, but I'm not 100% sure how many orders slipped through because of this. Checking the logs now...