FTP 没有列出具有相同设置的实时服务器上的文件
FTP not listing files on live server with identical setup
我有一个在 IIS 上运行的 WebApi 应用程序。
在开发中,它可以完美地读取和写入文件。
当它被部署到实时系统时,它会登录但不会列出文件夹的内容。这在过去是有效的,我无法弄清楚是什么改变了它停止工作。
我正在使用以下代码使用 FluentFTP。
Dim Host As String = FTPSettings.Val("Host")
Dim Port As Integer = CInt(FTPSettings.Val("Port"))
Dim UserName As String = FTPSettings.Val("Username")
Dim Password As String = FTPSettings.Val("Password")
Dim Client As FtpClient
Dim Creds As New NetworkCredential(UserName, Password)
Client = New FtpClient(Host) With {
.Port = Port,
.Credentials = Creds,
.EncryptionMode = FtpEncryptionMode.Explicit,
.SslProtocols = System.Security.Authentication.SslProtocols.Tls12,
.DataConnectionType = FtpDataConnectionType.PASV
}
Dim OrgID = 1
Dim Filelist() As FtpListItem
Client.SetWorkingDirectory($"/{OrgID.ToString}")
Filelist = Client.GetListing(Client.GetWorkingDirectory())
FTPSettings 是一个从数据库中检索设置的内部系统。
我试图从函数中 return 变量 FileList 但得到 "Object reference not set to an instance of an object".
我尝试过的事情:
- 正在更改连接类型(改为活动)- 没有错误但返回一个空列表
- 尝试过 BulkListing - 同样的错误
- 打开各种防火墙端口入站和出站
- 尝试抓住 Client.GetListing 行。没有更多详细信息 returned.
我在上面所做的所有更改仍然适用于测试系统,但不适用于实时系统。
此时我认为 live 机器上的设置有问题,但我不确定它在哪里。
经过大量阅读和测试后,我在 FluentFTP 的文档中看到了这一部分 - https://github.com/robinrodricks/FluentFTP#ftps
我忘了设置一些值。最后我将设置客户端的代码更改为以下
Client = New FtpClient(Host, UserName, Password)
Client.AutoDetect()
Autodetect 设置正确地获取了设置并且一切正常。
谢谢
我有一个在 IIS 上运行的 WebApi 应用程序。
在开发中,它可以完美地读取和写入文件。 当它被部署到实时系统时,它会登录但不会列出文件夹的内容。这在过去是有效的,我无法弄清楚是什么改变了它停止工作。
我正在使用以下代码使用 FluentFTP。
Dim Host As String = FTPSettings.Val("Host")
Dim Port As Integer = CInt(FTPSettings.Val("Port"))
Dim UserName As String = FTPSettings.Val("Username")
Dim Password As String = FTPSettings.Val("Password")
Dim Client As FtpClient
Dim Creds As New NetworkCredential(UserName, Password)
Client = New FtpClient(Host) With {
.Port = Port,
.Credentials = Creds,
.EncryptionMode = FtpEncryptionMode.Explicit,
.SslProtocols = System.Security.Authentication.SslProtocols.Tls12,
.DataConnectionType = FtpDataConnectionType.PASV
}
Dim OrgID = 1
Dim Filelist() As FtpListItem
Client.SetWorkingDirectory($"/{OrgID.ToString}")
Filelist = Client.GetListing(Client.GetWorkingDirectory())
FTPSettings 是一个从数据库中检索设置的内部系统。
我试图从函数中 return 变量 FileList 但得到 "Object reference not set to an instance of an object".
我尝试过的事情:
- 正在更改连接类型(改为活动)- 没有错误但返回一个空列表
- 尝试过 BulkListing - 同样的错误
- 打开各种防火墙端口入站和出站
- 尝试抓住 Client.GetListing 行。没有更多详细信息 returned.
我在上面所做的所有更改仍然适用于测试系统,但不适用于实时系统。
此时我认为 live 机器上的设置有问题,但我不确定它在哪里。
经过大量阅读和测试后,我在 FluentFTP 的文档中看到了这一部分 - https://github.com/robinrodricks/FluentFTP#ftps
我忘了设置一些值。最后我将设置客户端的代码更改为以下
Client = New FtpClient(Host, UserName, Password)
Client.AutoDetect()
Autodetect 设置正确地获取了设置并且一切正常。
谢谢