la question a trois sous-questions:
1) Le choix du protocole de transfert sécurisé
La version sécurisée de l'ancien FTP existe - il est appelé FTP/SSL (ancienne plaine FTP sur le canal crypté SSL). Peut-être pouvez-vous toujours utiliser votre ancienne infrastructure de déploiement - vérifiez simplement si elle prend en charge le protocole FTPS ou FTP/SSL.
Vous pouvez vérifier les détails sur les différences FTP, FTP/SSL et SFTP au http://www.rebex.net/secure-ftp.net/.
2) SFTP ou FTP/serveur SSL pour Windows
Lorsque vous choisissez d'utiliser ou non SFTP ou FTPS vous devez déployer le serveur approprié. Pour FTP/SSL, nous utilisons le Gene6 (http://www.g6ftpserver.com/) sur plusieurs serveurs sans problèmes. Il y a beaucoup de serveurs FTP/SSL Windows alors utilisez ce que vous voulez. La situation est un peu plus compliquée avec le serveur SFTP pour Windows - il n'y a que quelques implémentations de travail. Le Bitvise WinHTTPD semble très prometteur (http://www.bitvise.com/winsshd).
3) Composant de transfert de fichiers Internet pour ASP.NET
La dernière partie de la solution est le transfert sécurisé de fichiers depuis asp.net. Il y a plusieurs composants sur le marché. Je recommande le Rebex File Transfer Pack - il prend en charge FTP (et FTP/SSL) et SFTP (transfert de fichiers SSH).
Le code suivant montre comment télécharger un fichier sur le serveur via SFTP. Le code provient de notre Rebex SFTP tutorial page.
// create client, connect and log in
Sftp client = new Sftp();
client.Connect(hostname);
client.Login(username, password);
// upload the 'test.zip' file to the current directory at the server
client.PutFile(@"c:\data\test.zip", "test.zip");
// upload the 'index.html' file to the specified directory at the server
client.PutFile(@"c:\data\index.html", "/wwwroot/index.html");
// download the 'test.zip' file from the current directory at the server
client.GetFile("test.zip", @"c:\data\test.zip");
// download the 'index.html' file from the specified directory at the server
client.GetFile("/wwwroot/index.html", @"c:\data\index.html");
// upload a text using a MemoryStream
string message = "Hello from Rebex SFTP for .NET!";
byte[] data = System.Text.Encoding.Default.GetBytes(message);
System.IO.MemoryStream ms = new System.IO.MemoryStream(data);
client.PutFile(ms, "message.txt");
Martin