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.
This fork includes new commits from the original repository and from other forks if possible, upgrades to newer nuget dependencies, and uses net9.0 as a new target.
This fork uses edokan
as nuget prefix to avoid possible conflicts
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)
- .NET Core 9.0
dotnet new console
dotnet add package edokan.FubarDev.FtpServer.FileSystem.DotNet
dotnet add package edokan.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();
}