加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 远程服务器返回错误:227进入被动模式(500 oops vs_utilit

发布时间:2020-12-15 04:06:01 所属栏目:百科 来源:网络整理
导读:我在将 Windows服务连接到FTP站点时遇到问题. 我从另一个开发人员那里继承了一个Windows服务.该服务连接到第三方服务器,下载csv文件,然后处理它.出于某种原因,该服务停止工作(一年多前,在我获得该项目之前). 所以我回到基础,创建了一个控制台应用程序,并尝试
我在将 Windows服务连接到FTP站点时遇到问题.

我从另一个开发人员那里继承了一个Windows服务.该服务连接到第三方服务器,下载csv文件,然后处理它.出于某种原因,该服务停止工作(一年多前,在我获得该项目之前).

所以我回到基础,创建了一个控制台应用程序,并尝试仅在该应用程序中的连接/文件下载功能.我已经尝试了许多不同的方法来连接到FTP,但是所有这些方法都会向我的应用程序返回相同的错误:

The remote server returned an error: 227 Entering Passive Mode ()

这是我尝试过的众多方法之一:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftpaddress/filename.csv");
        request.Method = WebRequestMethods.Ftp.DownloadFile;

        request.Credentials = new NetworkCredential("username","password");

        request.UsePassive = true;

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();

        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream);
        Console.WriteLine(reader.ReadToEnd());

        Console.WriteLine("Download Complete,status {0}",response.StatusDescription);

        reader.Close();
        response.Close();

但它落在这一部分:

FtpWebResponse response = (FtpWebResponse)request.GetResponse();

我在几个论坛中读到将UsePassive属性设置为False修复了这些错误,但发生在我身上的一切都是因为我得到了语法错误,如下所示:

The remote server returned an error: (500) Syntax error,command unrecognized.

该文件托管在我无法控制的第三方FTP服务器上.我可以将URL粘贴到浏览器中,并提示我输入用户名和密码,然后允许我通过,我可以下载该文件.

为了消除我们的防火墙作为问题的原因,我在内部网络和WiFi(不在防火墙后面)运行应用程序,它没有任何区别.我还通过FileZilla以默认,主动和被动模式连接,并且每次都有效.那没问题.

然后我运行了Wireshark.这是使用Filezilla(即成功的)线程捕获的图像,处于被动模式:

这是使用应用程序连接(和失败)时的捕获,被动设置为true:

因此,您可以在上面的失败连接中看到,我可以很好地登录到服务器.然后无论出于何种原因发送额外请求,即“TYPE I”,它提示“切换到二进制模式”的响应.在下面,我得到以下内容:

500 oops: vsf_sysutil_recv_peek: no data

另外,我将Passive属性设置为false后再次运行它,这就是我得到的时间:

所以我的问题是双重的;

1,如果我以某种方式超越UsePassive问题并将该属性设置为false,那么这会解决我的问题吗?

2,忽略UsePassive属性,为什么我不能从应用程序下载文件,但可以从其他地方下载?

解决方法

问题现已解决.事实证明,卡巴斯基的内置防火墙阻止了连接.当我试图连接时它并没有给我发出警告,这令人讨厌,但让我放心地知道我的电脑是安全的.

线索在227返回的详细信息:

10051 – A socket operation was attempted to an unreachable network

此外,对于通过谷歌等达到此目的的任何人,远程服务器配置为仅允许被动连接,这就是我得到500语法错误的原因.在下载文件时研究线捕获显示,如果选择“活动”但是失败,Filezilla会自动恢复为“被动”模式.

我原来帖子中的代码现在工作正常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读