As an alternative to using @Thomas Pornin's answer (where he suggested to use SSH) you can use the Azure service bus to maintain a transparent connection from a local port to a remote server.
If this .Net client is installed locally, and the .Net server is running on a trusted server you won't need to worry about MITM since the client validates the HTTPS certificate located on the service bus.
Port Bridge
Note: Mentally replace SQL Client and 1433 with a port of your choosing... it's all the same with this TCP based proxy
This project allows several NAT'ed servers to access several NAT'ed clients across the internet over a single service bus connection.
It's a pretty smart implementation that will really get you thinking. Below is the source
http://blogs.msdn.com/b/clemensv/archive/2009/11/18/port-bridge.aspx
... and another explanation of the same.
http://brentdacodemonkey.wordpress.com/2010/05/05/azure-appfabric-%e2%80%93-a-bridge-going-anywhere/
Also, there is a related project called "SocketShifter" on codeplex: http://socketshifter.codeplex.com/ Although the codeplex site advises using portbridge, I do see check ins as of (Aug 2010) and not sure which one is more up-to-date. It may be worth investigating.