I’ve been using a feature of ASP.NET called Output Cache. It allows you to have server-side cache for your ASP.NET webpages. You can define several profiles and cache expiration rules. You can read more about it in a simple and short article at MSDN or in the full documentation also at MSDN.
A feature that I wasn’t able to find was cleaning all the cached data. You can remove cache for a specific page using HttpResponse.RemoveOutputCacheItem(”pagename”) but to remove all pages (which can have several cached versions each) you have to use some kind of workaround. You can use a Cache dependency relying in a item stored in HttpContext.Cache items collection, but for my particular scenario it wasn’t the right solution. Why?
If you have several front-end servers serving your website, you have independent cache systems, so when forcing a cache cleaning, you will force it only for the front-end serving your request. To solve this issue I’ve created a cache system relying on a file dependency. This way, when I change that file, all the front-end servers will clean their cache. I’ve included a CacheManager class that has the usual Add method, that automatically add the file dependency to cached data ( usually using Response.Cache.Add) and not only output cache.
Download source code and have fun exploring it.
While refactoring some C# code I came across some lines that seemed a bit awkward. I was trying to sort a list or an array randomly. That code was written before Linq came into the .Net Framework, so now I was able to figure out a new approach.
Since Linq to Objects has some similarities with SQL, I got the idea of trying the same approach that I used several times in SQL, which was ordering a SELECT statement using ORDER BY RAND().
The result is shown bellow.

It uses the Extension Methods syntax of Linq to save some bytes on the source code 
If you are an ASP.NET developer you must be familiar with web.config. Something that maybe you haven’t tried yet is to create custom configuration sections to store you application specific settings. Bellow you can see a web.config file that uses a custom configuration section. In the configuration/configSections element you must define which class is responsible for handling your configuration section. Then you can add your custom settings to the file as shown bellow.

The usage of your settings is shown bellow. The configuration section handler class is used in order to access the configuration properties.

I’ve shown you the usage of a class called SiteSettings, but how does it’s definition look? It is a class that inherits the ConfigurationSection class. The configuration section properties are defined by adding public properties that correspond to Configuration Elements. While adding these properties you can define the name of the XML node that you will use in the web.config file and either if the property is required or not. In the example bellow you can see the Singleton design pattern in order do avoid creating several instances of the class and loading the section from the configuration file each time I access the values.

In this example, we only have one configuration property. It is defined in the class bellow. It corresponds to a contact information. Each property of this class correspond to an XML attribute, and by using annotations you can define the name of the XML attribute, it’s default value, if it is required and even add validators such as regular expression validators. You can use several variable types such as strings, integers and event enumerables.

By using custom configuration settings this way instead of accessing ConfigurationManager.AppSettings as a dictionary of string values you get intellisense while using configuration settings, and best of all, automatic validation of the types, constraints and structure of the settings (checked when the settings are accessed for the first time).
The full demo project is available for download. I hope it gets useful to you.
Some time ago while developing a project I came across a problem related to Linq to Objects. I wanted do join a single object with a collection in order to transverse them with a foreach statement (the item was not allways present and I wanted to treat it as a regular element in the original collection).
Using the intellisense to find a Linq to Objects extension method that fitted my needs I didn’t find that particular functionality, but I thought about an alternative: creating a collection with the single element and joining the two collections with one of the two extension methods that seem promising to this new task: Union and Concat.

After reading the documentation and writing the example above I became aware of the difference. Union acts as a mathematical set operator, adding the elements of both lists into a single list without repeated elements. Contat, by the other hand keeps the repeated elements.
Some highlights from a nice article that I found in my feeds. They are excerpts of the document, text in italic was written by me. Please note that the lines lack some context.
.NET Services
.NET Access Control Service
All communication with the Access Control Service relies on standard protocols such as WS-Trust and WS-Federation. This makes the service accessible from any kind of application on any platform.
Claims-based identity is on its way to becoming the standard approach for distributed environments.
By providing an STS (Securtity Token Service) in the cloud, complete with rules-based claims transformation, the Access Control Service makes this modern approach to identity more attractive.
.NET Service Bus
The Service Bus assigns your organization a URI root, below which you’re free to create any naming hierarchy you like.
This allows your endpoints to be assigned specific, discoverable URIs.
Your application must also open a connection with the Service Bus for each endpoint it exposes.
The Service Bus holds this connection open, which solves two problems.
First, NAT is no longer an issue, since traffic on the open connection with the Service Bus will always be routed to your application. Second, because the connection was initiated from inside the firewall, there’s no problem passing information back to the application—the firewall won’t block this traffic.
.NET Workflow Service
Running (workflows) in the cloud brings some limitations, however.(not all Windows Workflow Foundation activities are available: code activity isn’t).
WF-based applications running in the Workflow Service can only use WF’s sequential workflow model, for example.
Also, running arbitrary code isn’t allowed, and so neither the BAL’s Code activity nor custom activities can be used.
SQL Services
SQL Services is an umbrella name for what will be a group of cloud-based technologies.
(the first one available is SQL Data Services)
SQL Data Services doesn’t provide a standard relational database, nor does it support SQL queries.
LINQ C# syntax, with queries sent via either SOAP or a RESTful approach. The other is to use ADO.NET Data Services
Live Services
A mesh-enabled Web application must be implemented using a multi-platform technology, such as Microsoft Silverlight, DHTML, or Adobe Flash. These technologies are supported on all of the operating systems that can run the Live Framework.(targeting Windows Vista/XP, Macintosh OS X, and Windows Mobile 6).