Vb.net FtpWebRequest.GetRequestStream挂起并失败。

Vb.net FtpWebRequest.GetRequestStream挂起并失败。,vb.net,windows-services,ftpwebrequest,Vb.net,Windows Services,Ftpwebrequest,我已经写了一个web服务,简而言之,它使用openpop来获取电子邮件,并将内容插入数据库,并保存图像附件。当我在本地保存图像时,效果很好,它完全符合预期。现在一个额外的要求是将图像保存到FTP目录中,这样我就可以动态创建文件夹(它们是根据时间戳创建的),而且效果很好。我的问题来自于我试图将它们保存到ftp。是的,我的用户名和密码是正确的,否则我不会创建目录 Private Sub UploadFile(ByVal fileToSave As FileInfo, ByVal path As St

我已经写了一个web服务,简而言之,它使用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
我也尝试过使用被动False和二进制False,我对堆栈跟踪做了更多的研究。
目前还没有找到解决办法。任何意见将不胜感激,我也为不同的问题。如果您想试一试,另一个问题不是关于ftp,而是关于windows server 2003上服务的权限这可能不是解决方案,但我发现URI字符串必须是“恰到好处”,而且“恰到好处”的内容因ftp服务器而异

所以
ftp://server/directory/file
适用于某些服务器,但需要
ftp://server//directory/file
处理其他服务器(注意服务器名称后的双斜杠)


Aso,您的URI的“密码”拼写错误:
ftp://UserName:Passowrd@999.99.999.9
并且您也在一个单独的代码行中提供凭据。

您完全正确,但我的凭据确实适用于此。我相信我只是出于一些目的而改变了这一点。我最终发送了文件,但另一端得到了0字节。我设置了断点,文件被转换为字节,但未能完全发送到ftp服务器。对不起,我没有注意到我从未接受过你的回答。我最终得到了可以工作的凭证,但是通过所有的路由器和交换机,发生了一些事情,我在另一端得到了一个0字节的文件。第二组凭证覆盖了第一组凭证,因此这不是拼写错误。我想我只是想尝试一下。我在目录上创建文件夹,我也在创建文件,但当我的代码试图通过线路传输字节时,它的另一端是一个0字节的文件。它的名字是正确的,哈哈。万一有人偶然发现这个。。。我也有同样的问题,但当我改为UseAssive=True时,它解决了我的问题。