I have had a bit of pain using blog engines like expression engine to make more static type sites, you end up working around a whole lot of features that you don't really need, and hacking things together for the things that you do. If your client is just your average small business type, they don't always relate to blogging terminology or concepts. They just want to update their interweb thingy, with something that works much like everything else they use on their computer.
Writing your own is certainly a large learning experience, and Hofstadter's Law will kick in like you wouldn't believe.
In the realm of asp.net, have heard very good things about graffiti, but not used it, was generally impressed by umbraco, have done a few sites with that, you get total control over the output, the ui is great, and clients understand it very easily.
I tried dotnetnuke a few years ago, but found that I had to work very hard to control the output, which (at the time anyway) was deeply rooted in the webforms paradigm, with all the markup horror that entails, although it does offer a huge number of addin modules, and has a massive user base.