FTP远程服务器返回错误:(530)未登录

时间:2014-12-23 19:05:42

标签: c# ftp

我一直试图解决这个问题超过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();

:请注意

我能够访问FTP,因为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();

换句话说:我能够读取文件的名称,但不能读取它们的内容

1 个答案:

答案 0 :(得分:0)

您可以在FTP URL上提供用户名和密码。例如,如果您要从/path/filename下载ftp://ftp.foo.com,则可以对用户名和密码进行编码,如下所示:

ftp://username:password@ftp.foo.com/path/filename

您应该能够为您尝试下载的文件构建此类网址。然后将该网址传递给XDocument.Load

但请注意,密码是以明文形式发送的(即不加密等)。

有关详细信息,请参阅RFC 1738的第3.2节。