Finally, a real blog engine. I've spent the last few days integrating BlogEngine.NET into the overall application. It's been a pretty good experience, and it certainly goes to show the power of open source. In one week I've implemented at least 3 months of work were I to do it from scratch (and then I'm not including all the features I'm not using in BlogEngine.NET, just yet).
One interesting thing I've learned, is a very surprising behavior with HttpContext.RewritePath(). This is tradtionally used by ASP.NET applications to perform URL rewriting chores. Another property that is available is HttpContext.RawUrl, which has always been unchanged regardless of rewriting. Now, it turns out, the framework actually talks back to the web server and if the "Use Integrated Pipeline" feature is enabled - which it is in a new IIS 7-style application pool.
I've not investigated all the implications, but two are that HttpContext.RawUrl is also changed to reflect the rewrite, which then causes code that relies on this being the original URL breaks. Another interesting behavior is that a Response.Redirect() doesn't necessarily actually reach the browser! When Response.Redirect() is attempted to the same URL as the original URL, the connection is broken, the browser views at as an aborted request - and tries again! It all ends up being an endless series of requests from the browser. Not good.