On the web side, I really think cost is the driving factor more than anything. As long as there's a free (open source) solution to MS's framework that is on par (we can argue either way which frameworks/platforms are better) there's little incentive for startups to go .NET. If a LAMP stack started costing as much as a .NET stack the landscape would be very different. .NET faces the problems going against the Java stack.
In the end, it's about the money. Which platform can I make more money on and does it more than pay for the costs to be on the platform? Right now on mobile it's iOS and on the web it's typically LAMP or lately a Ruby on Rails stack.