获取“远程服务器返回错误:(500)语法错误,命令无法识别”当我尝试运行FtpWebRequest.GetRequestStream时

时间:2010-01-14 20:24:39

标签: powershell ftp ftpwebrequest

我有以下代码将文件发送到FTP服务器。

function FtpUploader(
  [string]$uri,
  [string]$localeFile,
  [string]$user = "ftp",
  [string]$password = "ftp",
  [int]   $timeout  = 20000
){
    trap {
      Write-Host ("ERROR: " + $_) -Foregroundcolor Red
      return $false 
    }

    $ftp             = [System.Net.FtpWebRequest]::Create($uri)
    $ftp             = [System.Net.FtpWebRequest]$ftp
    $ftp.Method      = [System.Net.WebRequestMethods+Ftp]::UploadFile
    $ftp.Credentials = new-object System.Net.NetworkCredential($user, $password)  
    $ftp.Timeout     = $timeout
    $ftp.UseBinary   = $false
    $ftp.UsePassive  = $true

    $content         = Get-Content -en byte $localeFile

    $rs              = $ftp.GetRequestStream()
    $rs.Write($content, 0, $content.Length)

    $rs.Close()
    $rs.Dispose()

    return $true
}

我使用的URI是“ ftp://xxx.xxx.xxx.xxx/aaa/bbb/ccc/R1ACTIVE.TXT ”。 FTP服务器是vsftpd

大多数情况下,文件已上传。但有时我尝试运行$ftp.GetRequestStream()时会出现以下错误:

远程服务器返回错误:(500)语法错误,命令无法识别。

为什么???

1 个答案:

答案 0 :(得分:2)

我使用以下方法解决了这个问题:

$ftp.KeepAlive = $false