Running the following code in .NET 4.0 no longer works. Tested using LINQPad Versions 4.31(.NET 4) and 2.31 (.NET 3.5).
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("[target]");
request.UseBinary = false;
request.KeepAlive = false;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("[username]", "[password]");
Doing on network trace on both (using Microsoft Network Monitor 3.4) reveals that the previous version of .NE is sending the FTP command "CWD /" after the "PWD" and before the "Type A" where as the .NET 4 version is not (everything else appears to be the same). Not sure why the difference, but the result is the "(501) Syntax error in parameters or arguments" thrown on the "GetRequestStream()".
If the usage is now different with the new version please update documentation.