Ok, I figured out where the infinite loop is occurring (not why though).
When calling the Session.PutFiles() method, do NOT specify the remotePath parameter as "." (double-quote period doublequote)! I was under the impression that that meant the "local directory"...apparently not in this case.
So, I then changed that value to String.Empty, now I get this error (and it stops in a timely manner):
Session log file:
. 2012-08-21 09:27:28.119 --------------------------------------------------------------------------
. 2012-08-21 09:27:28.119 WinSCP Version 5.0.8 (Build 2438) (OS 6.1.7600)
. 2012-08-21 09:27:28.119 Configuration: nul
. 2012-08-21 09:27:28.120 Local account: IDOTCENTRAL\ganders
. 2012-08-21 09:27:28.120 Login time: Tuesday, August 21, 2012 9:27:28 AM
. 2012-08-21 09:27:28.120 --------------------------------------------------------------------------
. 2012-08-21 09:27:28.120 Session name: ftpuser@xxx.xxx.xxx.xxx (Ad-Hoc session)
. 2012-08-21 09:27:28.120 Host name: xxx.xxx.xxx.xxx (Port: 21)
. 2012-08-21 09:27:28.120 User name: ftpuser (Password: Yes, Key file: No)
. 2012-08-21 09:27:28.120 Tunnel: No
. 2012-08-21 09:27:28.120 Transfer Protocol: FTP
. 2012-08-21 09:27:28.120 Ping type: C, Ping interval: 30 sec; Timeout: 15 sec
. 2012-08-21 09:27:28.120 Proxy: none
. 2012-08-21 09:27:28.120 FTP: FTPS: Explicit SSL; Passive: Yes [Force IP: A]
. 2012-08-21 09:27:28.120 Local directory: default, Remote directory: home, Update: Yes, Cache: Yes
. 2012-08-21 09:27:28.120 Cache directory changes: Yes, Permanent: Yes
. 2012-08-21 09:27:28.120 DST mode: 1
. 2012-08-21 09:27:28.120 --------------------------------------------------------------------------
. 2012-08-21 09:27:28.133 Connecting to xxx.xxx.xxx.xxx ...
. 2012-08-21 09:27:28.136 Connected with xxx.xxx.xxx.xxx, negotiating SSL connection...
< 2012-08-21 09:27:28.136 220 Microsoft FTP Service
> 2012-08-21 09:27:28.136 AUTH SSL
< 2012-08-21 09:27:28.136 234 AUTH command ok. Expecting TLS Negotiation.
. 2012-08-21 09:27:28.377 SSL connection established. Waiting for welcome message...
> 2012-08-21 09:27:28.377 USER ftpuser
< 2012-08-21 09:27:28.378 331 Password required for ftpuser.
> 2012-08-21 09:27:28.378 PASS ********
< 2012-08-21 09:27:28.379 230 User logged in.
> 2012-08-21 09:27:28.379 SYST
< 2012-08-21 09:27:28.379 215 Windows_NT
> 2012-08-21 09:27:28.380 FEAT
< 2012-08-21 09:27:28.380 211-Extended features supported:
< 2012-08-21 09:27:28.380 LANG EN*
< 2012-08-21 09:27:28.380 UTF8
< 2012-08-21 09:27:28.380 AUTH TLS;TLS-C;SSL;TLS-P;
< 2012-08-21 09:27:28.380 PBSZ
< 2012-08-21 09:27:28.380 PROT C;P;
< 2012-08-21 09:27:28.380 CCC
< 2012-08-21 09:27:28.380 HOST
< 2012-08-21 09:27:28.380 SIZE
< 2012-08-21 09:27:28.380 MDTM
< 2012-08-21 09:27:28.380 REST STREAM
< 2012-08-21 09:27:28.380 211 END
> 2012-08-21 09:27:28.380 OPTS UTF8 ON
< 2012-08-21 09:27:28.381 200 OPTS UTF8 command successful - UTF8 encoding now ON.
> 2012-08-21 09:27:28.381 PBSZ 0
< 2012-08-21 09:27:28.381 200 PBSZ command successful.
> 2012-08-21 09:27:28.381 PROT P
< 2012-08-21 09:27:28.382 200 PROT command successful.
. 2012-08-21 09:27:28.382 Connected
. 2012-08-21 09:27:28.382 --------------------------------------------------------------------------
. 2012-08-21 09:27:28.382 Using FTP protocol.
. 2012-08-21 09:27:28.382 Doing startup conversation with host.
> 2012-08-21 09:27:28.382 PWD
< 2012-08-21 09:27:28.383 257 "/" is current directory.
. 2012-08-21 09:27:28.383 Getting current directory name.
. 2012-08-21 09:27:28.383 Startup conversation with host finished.
< 2012-08-21 09:27:28.383 Script: Active session: [1] ftpuser@xxx.xxx.xxx.xxx
> 2012-08-21 09:27:28.664 Script: put -nopermissions -preservetime -transfer="binary" -- "C:\temp\install.log" ""
. 2012-08-21 09:27:28.665 Copying 1 files/directories to remote directory "/"
. 2012-08-21 09:27:28.665 PrTime: Yes; PrRO: No; Rght: rw-r--r--; PrR: No (No); FnCs: N; RIC: 0100; Resume: S (102400); CalcS: No; Mask: "
. 2012-08-21 09:27:28.665 TM: B; ClAr: No; CPS: 0; InclM:
. 2012-08-21 09:27:28.665 AscM: *.*html; *.htm; *.txt; *.php; *.php3; *.cgi; *.c; *.cpp; *.h; *.pas; *.bas; *.tex; *.pl; *.js; .htaccess; *.xtml; *.css; *.cfg; *.ini; *.sh; *.xml
. 2012-08-21 09:27:28.665 File: "C:\temp\install.log"
. 2012-08-21 09:27:28.666 Copying "C:\temp\install.log" to remote directory started.
. 2012-08-21 09:27:28.666 Binary transfer mode selected.
. 2012-08-21 09:27:28.667 Starting upload of C:\temp\install.log
> 2012-08-21 09:27:28.667 TYPE A
< 2012-08-21 09:27:28.667 200 Type set to A.
> 2012-08-21 09:27:28.667 PASV
< 2012-08-21 09:27:28.668 227 Entering Passive Mode (xxx.xxx.xxx.xxx,201,201).
> 2012-08-21 09:27:28.669 LIST
< 2012-08-21 09:27:28.671 150 Opening ASCII mode data connection.
. 2012-08-21 09:27:28.672 SSL connection established
< 2012-08-21 09:27:28.673 226 Transfer complete.
> 2012-08-21 09:27:28.674 TYPE I
< 2012-08-21 09:27:28.674 200 Type set to I.
> 2012-08-21 09:27:28.674 PASV
< 2012-08-21 09:27:28.675 227 Entering Passive Mode (xxx.xxx.xxx.xxx,201,202).
> 2012-08-21 09:27:28.676 STOR "
< 2012-08-21 09:27:28.677 550 The filename, directory name, or volume label syntax is incorrect.
. 2012-08-21 09:27:28.677 Copying files to remote side failed.
* 2012-08-21 09:27:28.678 (ExtException) Copying files to remote side failed.
* 2012-08-21 09:27:28.678 The filename, directory name, or volume label syntax is incorrect.
. 2012-08-21 09:27:28.678 Asking user:
. 2012-08-21 09:27:28.678 Error transferring file 'C:\temp\install.log'. ("Copying files to remote side failed.","The filename, directory name, or volume label syntax is incorrect. ")
* 2012-08-21 09:27:28.684 (EScpSkipFile) Error transferring file 'C:\temp\install.log'.
* 2012-08-21 09:27:28.684 Copying files to remote side failed.
* 2012-08-21 09:27:28.684 The filename, directory name, or volume label syntax is incorrect.
. 2012-08-21 09:27:28.684 Script: Failed
> 2012-08-21 09:27:29.166 Script: exit
. 2012-08-21 09:27:29.166 Script: Exit code: 1
. 2012-08-21 09:27:29.169 Disconnected from server