MSDeploy fails with "an existing connection was forcibly closed by the remote host"
The cause was a mixture of things - an internal DNS resolution issue, meant the hostname was resolving to the wrong IP, plus we have to use IIS6, and I believe there to be a problem with the hosting of the http agent required for msdeploy on the same port as existing websites.
The resolution was to specify the IP expicitly, and re-install the deployment service (WebDeploy) from the command line, specifying a custom endpoint to avoid the IIS conflict.
My working incantation:
"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -verb:sync -source:package=D:\Path\obj\Configuration\Package\Project.zip -dest:auto,computerName='http://192.168.x.xxx:8090/MsDeployAgentService2/' -allowUntrusted -setParam:"IIS Web Application Name"="Website Name In IIS"