Your regex is not matching the incoming URLs. you need something closer to this
RewriteRule ^/(.+)\.html$ /$1.aspx [L]
If you want to match .htm or .html on the incoming side, then change it to this:
RewriteRule ^/(.+)\.htm(l)?$ /$1.aspx [L]
or this, if you think it is more readable:
RewriteRule ^/(.+)\.(htm|html)$ /$1.aspx [L]
If you want to append the query string automatically, then change it to this:
RewriteRule ^/(.+)\.(htm|html) /$1.aspx [L,QSA]
I don't know what that $3 was doing in your replacement string. I'm guessing it was left over from some previous attempts to get it working. in your original rule, there wasn't even a single capture, so even $1 would evaluate to nothing, had the rule matched.
And the rule would match only a url like this: ".html" Any URL with something preceding the .html would not match. "Hello.html" would not match. In my rules the (.+) captures a string of one or more characters.
This is all written up in the doc in much greater detail, with lots of examples. It really is a good idea to read the documentation.