Perhaps because there are some genuinely nice points to it? Seems odd, but it's true.
.NET was born from frustration. Back in the day, Microsoft realised that their primary programming platforms (e.g. VB6) were a mess, inviting insecurity and problems. They decided to focus their efforts on Java, but found that there were inadequacies with it (e.g. poor support for interop with existing C-based libraries; poor support for native look & feel on Windows) so they made their own modified version of Java with some "improvements" to these points (which sacrificed cross-platform, a point that at best MS didn't care about).
And Sun sued them over it.
So rather than give up completely, they designed their own "better" Java from scratch - like Java, but without the restriction of being built around one language (i.e. easy for many languages to interop with each other). Like Java, but without the 100 meg cross-dependent class library. Like Java, but actually standardized so anyone can make their own implementation easily. Like Java, but with easy interop with native libraries. Like Java, but with (sigh) better Windows-native behaviour.
Those are the primary advantages at a framework level. There are downsides too, of course, but people who blindly call .NET crap compared to Java are anti-MS people incapable of admitting reality to themselves.
For Linux, we have Mono, a Free Software .NET implementation designed to bring all the above advantages to Free Software app development, and stop people from needing to fight with C to write their apps (F-Spot and Tomboy in a default Ubuntu install are .NET apps written on Linux in C# which use Mono)