【问题标题】:Error .Net VB -- The remote server returned an error: (501) Syntax error in parameters or argumentsError .Net VB -- 远程服务器返回错误:(501) 参数或参数中的语法错误
【发布时间】:2012-08-14 16:10:48
【问题描述】:

我写了一段代码,只是为了测试将 ASCII 类型的 txt 文件发送到 FTP 服务器,但不断出现以下错误。

远程服务器返回错误:(501) 参数或参数中的语法错误。

我确定用户名和密码正确,我尝试将 UsePassive 设置为 true 和 false,但得到相同的错误。

以下是我使用的代码。

Imports System.IO
Imports System.Text
Imports System.Net

Module Module1

Sub Main()
    Dim lPOSByteArray() As Byte
    Dim lEncoding As New ASCIIEncoding
    Dim lPOSFlatFile As String
    lPOSFlatFile = System.IO.File.ReadAllText("C:\\Users\\somebody\\Desktop\\Test.config.XML")
    lPOSByteArray = lEncoding.GetBytes(lPOSFlatFile)

    Dim lFTPrequest As System.Net.FtpWebRequest

    lFTPrequest = DirectCast(WebRequest.Create("ftp://" & "199.222.111.111" & "/" & "Test.txt"), System.Net.FtpWebRequest)
    lFTPrequest.Proxy = Nothing
    lFTPrequest.Credentials = New NetworkCredential("userxxx", "passyyy")
    lFTPrequest.Method = WebRequestMethods.Ftp.UploadFile
    lFTPrequest.UseBinary = False
    lFTPrequest.UsePassive = True
    lFTPrequest.ContentLength = lPOSByteArray.Length

    'ERROR happened on following line
    Dim lFTPrequestStream As Stream = lFTPrequest.GetRequestStream()
    lFTPrequestStream.Write(lPOSByteArray, 0, lPOSByteArray.Length)
    lFTPrequestStream.Close()

    Dim response As System.Net.FtpWebResponse = DirectCast(lFTPrequest.GetResponse(), System.Net.FtpWebResponse)

End Sub

结束模块

【问题讨论】:

    标签: .net vb.net ftp


    【解决方案1】:

    我认为您的代码是正确的。问题出在其他地方,例如网络或 ftp 服务器。我尝试使用我的 FTP 服务器并更改了线路

     lPOSByteArray = lEncoding.GetBytes(lPOSFlatFile)
    

     lPOSByteArray = lEncoding.GetBytes("test")
    

    并且工作正常。你能用 FileZila 之类的 ftp 客户端读/写这个文件吗?

    【讨论】:

    • 感谢您的快速帮助。是的,你是对的,问题是由网络引起的。我从另一个域尝试了我的代码。它部分有效。我说它部分有效,因为它只发送文件每行的前 81 个字符。你对这个问题有什么想法吗?
    • 我无法在此处重现此问题。我创建了一个文件并分配给“lPOSFlatFile = System.IO.File.ReadAllText("C:\test.log")”并且可以工作。该文件是一个简单的文本,每行 100 个字符。什么时候读取xml,所有内容都到lPOSFlatFile?
    • 非常感谢您抽出宝贵时间,乔纳森。是的,lPOSFlatFile 会将整个 XML 文件保存为 ASCII 格式的长字符串,我检查了这个字符串的内容,它确实保留了所有字符。但是在我检查FTP服务器上上传的文件后,每一行文件都在那里。但每行只有 81 个字符,如果它长于 81 个字符。如果我找到它的原因,我会更新这篇文章。
    • 据我了解,“问题”可能是由 IBM MainFrame FTP 引起的。它只接受具有文件中每一行长度限制的特定格式的文件。
    • 我试过了,当我使用二进制时,一切都搞砸了。只得到不可读的字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    相关资源
    最近更新 更多