作者:夏冰语风 | 来源:互联网 | 2024-11-05 18:05
在IIS上运行的WebApi应用程序在开发环境中能够正常进行文件的读写操作。然而,在尝试通过FTP访问实时服务器上的文件列表时,遇到了无法显示的问题,尽管服务器配置与开发环境相同。这可能涉及权限设置、FTP服务配置或网络连接等方面的问题。
我有一个在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,但得到“对象引用未设置为对象的实例”。
我尝试过的事情:
- 更改连接类型(处于活动状态)-没有错误,但带回一个空列表
- 尝试批量列出-同样的错误
- 打开入站和出站的各种防火墙端口
- 尝试抓住Client.GetListing行。没有返回更多详细信息。
我在上面所做的所有更改仍然可以在测试系统上运行,但不能实时运行。
这时我正在考虑实时计算机上的设置有问题,但是我不确定它在哪里。
经过大量的阅读和测试,我在FluentFTP的文档中找到了本节-https://github.com/robinrodricks/FluentFTP#ftps
我忘记设置一些值。最后,我将设置客户端的代码更改为以下
Client = New FtpClient(Host,UserName,Password)
Client.AutoDetect()
“自动检测”设置正确选择了设置,一切正常。
谢谢