【发布时间】:2011-07-30 00:20:28
【问题描述】:
我已经编写了一个网络服务,简而言之,它使用 openpop 来获取电子邮件,并处理要插入数据库的内容并保存图像附件。当我在本地保存图像时,它工作得很好,它完全符合它的假设。现在增加的要求是将图像保存到 FTP 目录,这样我就可以动态创建我的文件夹(它们是根据时间戳创建的)并且效果很好。我的问题来自当我尝试将它们保存到 ftp 时。是的,我的用户名和密码是正确的,否则我不会创建目录。
Private Sub UploadFile(ByVal fileToSave As FileInfo, ByVal path As String)
Dim UploadRequest As FtpWebRequest = DirectCast(WebRequest.Create("ftp://UserName:Passowrd@999.99.999.9" & path), FtpWebRequest)
UploadRequest.Credentials = New NetworkCredential("PicService", "grean.matching18")
UploadRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
UploadRequest.UseBinary = True
UploadRequest.UsePassive = True
' Const BufferSize As Integer = 2048
' Dim content(BufferSize - 1) As Byte, dataRead As Integer
Dim bFile() As Byte = System.IO.File.ReadAllBytes(fileToSave.ToString)
'UploadRequest.ContentLength = content.Length
Using FileStream1 As FileStream = fileToSave.OpenRead()
Try
'open request to send
Using RequestStream As Stream = UploadRequest.GetRequestStream
End Using
Catch ex As Exception
Finally
'ensure file closed
FileStream1.Close()
End Try
End Using
End Sub
我也尝试过使用 Passive False 和 Binary False,我对堆栈跟踪进行了更多研究。 并找到了this article,但目前还没有解决方案。任何输入将不胜感激,对于不同的问题,我也是posting another question on windows services。如果您想试一试,另一个问题不是关于 ftp,而是关于 windows server 2003 上服务的权限
【问题讨论】:
-
万一其他人偶然发现...我也遇到了同样的问题,但是当我更改为 UsePassive = True 时,它解决了我的问题。
标签: vb.net windows-services ftpwebrequest