die Frage hat drei Teilfragen:
1) Auswahl des sicheren Übertragungsprotokolls
Die sichere Version des alten FTP existiert - es FTP/SSL (plain old FTP über SSL verschlüsselten Kanal) genannt wird. Vielleicht können Sie Ihre alte Deployment-Infrastruktur trotzdem nutzen - prüfen Sie einfach, ob sie FTPS oder FTP/SSL unterstützt.
Sie können Details über FTP, FTP/SSL und SFTP-Unterschiede unter Seite überprüfen.
2) SFTP oder FTP/SSL-Server für Windows
Wenn Sie wählen, ob Sie SFTP oder FTPS verwenden müssen den richtigen Server implementieren. Für FTP/SSL verwenden wir das Gene6 (http://www.g6ftpserver.com/) auf mehreren Servern ohne Probleme. Es gibt viele FTP/SSL Windows-Server, so dass Sie verwenden können, was Sie wollen. Die Situation ist mit SFTP Server für Windows etwas komplizierter - es gibt nur wenige funktionierende Implementierungen. Das BitVise WinHTTPD sieht vielversprechend aus (http://www.bitvise.com/winsshd).
3) Internet File Transfer Komponente für ASP.NET
Der letzte Teil der Lösung ist sichere Dateiübertragung von asp.net. Es gibt mehrere Komponenten auf dem Markt. Ich würde die Rebex File Transfer Pack empfehlen - es unterstützt sowohl FTP (und FTP/SSL) als auch SFTP (SSH File Transfer).
Der folgende Code zeigt, wie eine Datei über SFTP auf den Server hochgeladen wird. Der Code ist unserer Rebex SFTP tutorial page entnommen.
// 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