ASP.NET runs on the server, it was necessary to run something on the client.
WPF is already fairly empowered, what you need is something that can work safely on the client and cannot easily be used to commit malicious things. In other words, far from the “empowerment” of WPF, it was necessary to seriously limit some form of WPF.
In addition, it cannot be assumed that the client has a complete .NET infrastructure; Silverlight is designed to contain enough necessary infrastructure for everything to happen with the minimum requirements for the client.
source share