【发布时间】:2020-04-10 07:09:31
【问题描述】:
我有一个 .NET Core 控制台应用程序,它从 FTP 服务器下载文件并对其进行处理。我将应用程序移到了新服务器上,但它停止了工作。在新服务器上禁用 Windows 防火墙解决了这个问题,但显然我不想让它敞开 - 我需要一种有针对性的方式来启用这个应用程序。默认防火墙规则似乎已经允许 FTP 流量(入站和出站),所以我不知道可以打开哪些其他端口(我想我正在使用活动 FTP,它可以使用广泛的端口范围 AFAIK)。我希望将应用程序列入白名单,但它不是 .exe 文件,所以我不确定要允许哪个应用程序。
我使用 .bat 文件的快捷方式运行应用程序。 bat 文件仅包含以下行:
dotnet "C:\path\my-application.dll"
应用失败的代码是:
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();
是否可以允许应用程序通过防火墙?我是否允许 dotnet.exe、.bat 文件或 .dll 文件,或者是否有替代方法?提前感谢您的帮助!
【问题讨论】:
-
有一种方法可以发布您的控制台应用程序,以便创建
exe-> (stackoverflow.com/questions/44074121/…),然后您可以将exe列入白名单 -> 一种可能的解决方案。
标签: c# .net .net-core ftp windows-firewall