Couldn't the same argument ("just a VM and a set of APIs") be made for many programming languages, Web or otherwise? I'm not criticizing what you wrote, just trying to make sure I understand what you're saying.
asp.net out-of-the-box will not work for a massively concurrent public facing app. However, neither will php, rails, django, any of the java frameworks. "re-invent the wheel" might be an overstatement for what you need to do, but no matter what...you're going to do some serious tweaking since every app has different needs