0

我有一个在 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 是一个从数据库中检索设置的内部系统。

我试图从函数返回变量 FileList 但得到一个“对象引用未设置为对象的实例”。

我尝试过的事情:

  • 更改连接类型(激活)- 没有错误但带回一个空列表
  • 尝试 BulkListing - 同样的错误
  • 打开各种防火墙端口入站和出站
  • 尝试绕过 Client.GetListing 行。没有更多细节返回。

我在上面所做的所有更改仍然适用于测试系统,但不适用于现场。

在这一点上,我认为现场机器上的设置存在问题,但我不确定它在哪里。

4

1 回答 1

0

经过大量阅读和测试后,我在 FluentFTP 的文档中遇到了这一部分 - https://github.com/robinrodricks/FluentFTP#ftps

我忘记设置一些值。最后,我将设置客户端的代码更改为以下

        Client = New FtpClient(Host, UserName, Password)
        Client.AutoDetect()

自动检测设置正确地选择了设置并且一切正常。

谢谢

于 2019-11-18T15:38:59.507 回答