1. Fashion and lack of awareness of .NET's benefits - php is more ubiquitous and probably always will be, ruby is more trendy. Don't underestimate the effect of programming fashion in startup culture. Some people would rather waste their time writing server-side
code with immature tech like Node.JS than use something tried and tested like .NET or Java.
2. Fear of costs - People know they can always get Linux servers for next to nothing. I tend to think that if you're businesses sucess depends on eliminating the cost of a few Windows Server licences, then you've got a crappy business plan, but not everyone
thinks like that.
I think .NET isn't used because people assume that you have to buy Visual Studio to use it. There is still the misunderstanding that the express versions can't be used in production, and that you can't develop in .NET without Visual Studio.
Another big reason is that colleges don't teach it. Most professors I've met are open-source proponents, so the kids are taught C++ or Java due to their cross-platform support.