0

タイプ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

エンドモジュール

4

1 に答える 1

0

あなたのコードは正しいと思います。問題は、ネットワークや ftp サーバーなど、別の場所にあります。FTPサーバーで試して、行を変更しました

 lPOSByteArray = lEncoding.GetBytes(lPOSFlatFile)

 lPOSByteArray = lEncoding.GetBytes("test")

そして正常に動作します。FileZila のような ftp クライアントでこのファイルを読み書きできますか?

于 2012-08-14T16:36:38.090 に答える