I recently started off on a .NET engagement (my first actually) and I'm already p!ss*d 0ff !!!
It amazed me no end how much of the software on my computer .NET 3.0 and ASP.NET 2.0 simply assumed or installed without even checking too see if I really wanted to be tied in to it.
For instance, ASP.NET automatically assumed that all my apps would be floated on IIS 5.0. Interestingly enough, Visual Studio.NET 2008 also made the same assumption and required me to have a well configured instance of IIS up and running every time I OPEN my project! So now, I just leave my IIS instance up and running all the time; in fact, just like almost every other ASP dev would have to, I have the IIS service set up to start automatically on boot. :(
And when it came to security, every one just assumed that we were using Windows Domain User Authentication. ASP.NET even has its own sweet little group of users that run the sites and impersonate as users on them. You just grant them access and shazam! you're good to go.
Except now you're stuck with that group and any fine grained access control is going to entail some serious Active Directory management... that I'm not at all keen on!
What all this points at is how Microsoft seems to want to lock us into their stack. Given that there aren't really any other viable platforms to host .NET apps, we don't really have much of a choice in the components; but even when the options do come in, these assumed dependencies will raise the barrier to entry for those options to unsurmountable levels. So we're going to be stuck with M$, for ever!
I guess some people are just never going to get it.