使用 PowerShell 连接到 Azure FTP 时出现错误 501,但在 C# 中有效

Error 501 when connecting to Azure FTP with PowerShell but works in C#

我尝试在 PowerShell 5.1 中使用 WebClient 将一些文件上传或下载到 Azure AppService 托管网站。我从 Azure 中我的应用程序的 PublishProfile 获得了 FTP 凭证和 FTP URL 并使用下面的代码来完成任务,

$username = "$somename"
$password = "somepassword"
$webclient = New-Object -TypeName System.Net.WebClient
$webclient.Credentials = New-Object 
System.Net.NetworkCredential($username, $password)

$localfilename = "Temp.txt"

$destUrl = "ftp://waws-someaddress.ftp.azurewebsites.windows.net/site/wwwroot/PictureReview/temp.txt"

$uri = New-Object System.Uri($destUrl)

#Write-Host $uri

$webclient.UploadFile($uri, $localfilename)
$webClient.Dispose()

然而,正如我所尝试的,无论何时使用 UploadFile()DownloadFile(),它总是给我

Exception calling "UploadFile" with "2" argument(s): "The remote server returned an error: (501) Syntax error in parameters or arguments." The remote server returned an error: (501) Syntax error in parameters or arguments.

我尝试了另一个 public 测试 FTP 服务器 URL,比如 ftp.dlptest.com 而不是 Azure FTP URL,而且效果很好出色地。有没有人遇到过这个问题?这是 Azure 应用服务的问题吗?

我也在 Azure FTP URL 的 C# 代码中尝试了相同的方法,它也很有效。

应楼主要求,C#代码如下:

WebClient client = new WebClient(); 
client.Credentials = new NetworkCredential("$somename", "somepassword"); 
client.UploadFile("ftp://waws-someaddress.ftp.azurewebsites.windows.net/site/wwwroot/PictureReview/temp.txt", @"C:\users\blahblah\Desktop\temp.txt");

您的 C# 代码显示您已 $ 登录您的用户名。

$ 符号在双引号 PowerShell 字符串中具有特殊含义。要使用文字 $ 符号,您需要使用反引号将其转义:

$username = "`$somename"

或使用单引号:

$username = '$somename'