我一直试图解决这个问题超过4个小时,这让我发疯了。
我创建了一个FTP,我想用c#代码读取一些数据。
当FTP没有用户名/密码访问权限时,一切都运行良好。但是当我输入用户名和密码时,我收到此错误消息: 远程服务器返回错误:(530)未登录。
我在stackoverflow和互联网上尝试了所有问题,如:
使用.Normalize()
并使用@username
,但我一直收到错误。
这是我的代码:
foreach (string fileNameInFTP in directories)
{
// string fileNameInFTP2 = Path.GetFileNameWithoutExtension(fileNameInFTP);
if ((!haveWeAlreadyParsedThisFile(fileNameInFTP)) && (fileNameInFTP.Contains("CustsExport")) && (!fileNameInFTP.EndsWith("Empty.xml")) && (!fileNameInFTP.Contains("DelCustsExport")))
{
string file = FTPAddress + "/" + fileNameInFTP;
Console.WriteLine(file);
List<Customer> customersList =
(
from e in XDocument.Load(file).Root.Elements("cust")
select new Customer
{
MemeberID = (int)e.Attribute("memberid"),
CustomerID = (int)e.Attribute("custid"),
FirstName = (string)e.Attribute("fname"),
LastName = (string)e.Attribute("lname"),
ShowsNumber = (int)e.Attribute("count_noshow"),
VisitNumber = (int)e.Attribute("count_resos"),
Cancellation = (int)e.Attribute("count_cancel"),
MobileNumber = (string)e.Element("phone").Attribute("phonenumber")
/*Projects =
(
from p in e.Elements("projects").Elements("project")
select new Project
{
ProjectCode = (string)p.Element("code"),
ProjectBudget = (int)p.Element("budget")
}).ToArray()*/
}).ToList();
directories
变量是FTP中文件的列表,当我调试代码时,我可以看到它有文件,但这一行中的例外情况是:
List<Customer> customersList =
(
from e in XDocument.Load(file).Root.Elements("cust")
select new Customer
{
MemeberID = (int)e.Attribute("memberid"),
CustomerID = (int)e.Attribute("custid"),
FirstName = (string)e.Attribute("fname"),
LastName = (string)e.Attribute("lname"),
ShowsNumber = (int)e.Attribute("count_noshow"),
VisitNumber = (int)e.Attribute("count_resos"),
Cancellation = (int)e.Attribute("count_cancel"),
MobileNumber = (string)e.Element("phone").Attribute("phonenumber")
/*Projects =
(
from p in e.Elements("projects").Elements("project")
select new Project
{
ProjectCode = (string)p.Element("code"),
ProjectBudget = (int)p.Element("budget")
}).ToArray()*/
}).ToList();
换句话说:我能够读取文件的名称,但不能读取它们的内容
答案 0 :(得分:0)
您可以在FTP URL上提供用户名和密码。例如,如果您要从/path/filename
下载ftp://ftp.foo.com
,则可以对用户名和密码进行编码,如下所示:
ftp://username:password@ftp.foo.com/path/filename
您应该能够为您尝试下载的文件构建此类网址。然后将该网址传递给XDocument.Load
。
但请注意,密码是以明文形式发送的(即不加密等)。
有关详细信息,请参阅RFC 1738的第3.2节。