I can think of a few practical reasons why (I can think of non-practical ones too, but I assume that's not what you're after :)
1. .Net and Asp have not insignificant upfront costs when compared to a stack based on Ruby, PHP, or practically anything else.
2. You're basically tied to Windows application servers. There really isn't much of an option to move to another OS (whether because you've changed hosts, or you want something more stripped down or leaner, or you've found a valuable library that's only available on a BSD or something).
3. ASP (even with .Net) presents a pretty rigid framework for application development (though I'm sure there's ways around it). If what you're after is MS's take on MVC, that's probably fine, but if you're looking to push boundaries, you might want to think about a more piecemeal approach.
#3: I've messed around with .NET WebMethods a bit. They allow me to go completely around the rigidness of ASP when I need to and they can stay inside the same C# backing code for the page.
1. .Net and Asp have not insignificant upfront costs when compared to a stack based on Ruby, PHP, or practically anything else.
2. You're basically tied to Windows application servers. There really isn't much of an option to move to another OS (whether because you've changed hosts, or you want something more stripped down or leaner, or you've found a valuable library that's only available on a BSD or something).
3. ASP (even with .Net) presents a pretty rigid framework for application development (though I'm sure there's ways around it). If what you're after is MS's take on MVC, that's probably fine, but if you're looking to push boundaries, you might want to think about a more piecemeal approach.