如何通过 Windows 防火墙允许 .NET Core 控制台应用 FTP 连接?

Dav*_*ash 5 .net c# ftp windows-firewall .net-core

我有一个 .NET Core 控制台应用程序,它从 FTP 服务器下载文件并处理它们。我将应用程序移到新服务器上,但它停止工作。在新服务器上禁用 Windows 防火墙解决了这个问题,但显然我不想让它完全打开 - 我需要一种有针对性的方式来启用这个应用程序。默认防火墙规则似乎已经允许(入站和出站)FTP 流量,因此我不知道可以打开哪些其他端口(我想我正在使用活动 FTP,它可以使用广泛的端口范围 AFAIK)。我更愿意将该应用程序列入白名单,但它不是 .exe 文件,所以我不确定要允许哪个应用程序。

我使用 .bat 文件的快捷方式运行该应用程序。bat 文件仅包含以下行:

dotnet "C:\path\my-application.dll"
Run Code Online (Sandbox Code Playgroud)

应用程序失败的代码是:

FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(ftpServerUri);
request.UseBinary = true;
request.Credentials = new NetworkCredential(ftpUser, ftpPsw);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Proxy = null;
request.KeepAlive = false;
request.UsePassive = false;

// hangs here forever unless Windows Firewall is turned off
FtpWebResponse response = (FtpWebResponse)await request.GetResponseAsync();
Run Code Online (Sandbox Code Playgroud)

是否可以允许应用程序通过防火墙?我是否允许使用 dotnet.exe、.bat 文件或 .dll 文件,或者是否有其他方法可以做到这一点?在此先感谢您的帮助!

Cli*_*int 1

您可以在 Win10 上尝试 2 件事:

  • 允许应用程序通过 Windows 防火墙

导航路径:控制面板\所有控制面板项目\Windows Defender 防火墙\允许的应用程序

单击允许其他应用程序

在下面的弹出窗口中,提供 dotnet.exe 的绝对路径

  • 使用以下命令配置具有高级安全性的 Windows Defender 防火墙

导航路径:控制面板\所有控制面板项目\Windows Defender 防火墙\高级设置

编辑:

事实证明,白名单起到了作用。