This FTP server is written as .NET Standard 2.0 library and has an abstract file system which allows e.g. Google Drive as backend.
The library is released under the .
- Visual Studio 2022 / C# 8.0
- Visual Studio 2022
- .NET Standard 2.0 (everything except sample application, PAM authentication)
- .NET Core 3.1 (PAM authentication)
dotnet new console
dotnet add package FubarDev.FtpServer.FileSystem.DotNet
dotnet add package FubarDev.FtpServer
dotnet add package Microsoft.Extensions.DependencyInjection
// Setup dependency injection
var services = new ServiceCollection();
// use %TEMP%/TestFtpServer as root folder
services.Configure<DotNetFileSystemOptions>(opt => opt
.RootPath = Path.Combine(Path.GetTempPath(), "TestFtpServer"));
// Add FTP server services
// DotNetFileSystemProvider = Use the .NET file system functionality
// AnonymousMembershipProvider = allow only anonymous logins
services.AddFtpServer(builder => builder
.UseDotNetFileSystem() // Use the .NET file system functionality
.EnableAnonymousAuthentication()); // allow anonymous logins
// Configure the FTP server
services.Configure<FtpServerOptions>(opt => opt.ServerAddress = "127.0.0.1");
// Build the service provider
using (var serviceProvider = services.BuildServiceProvider())
{
// Initialize the FTP server
var ftpServerHost = serviceProvider.GetRequiredService<IFtpServerHost>();
// Start the FTP server
ftpServerHost.StartAsync(CancellationToken.None).Wait();
Console.WriteLine("Press ENTER/RETURN to close the test application.");
Console.ReadLine();
// Stop the FTP server
ftpServerHost.StopAsync(CancellationToken.None).Wait();
}