我们使用c语言开发了一个ftp文件上传应用程序,该应用程序已经完美地工作了很长一段时间。在过去的几天里,用户报告他收到了一个错误“远程服务器返回了一个错误:(550)文件不可用(例如,找不到文件,无法访问)。”我们非常惊讶,因为我们没有对编码和环境进行任何更改。
这个错误是由
WebRequest request = WebRequest.Create(directoryPath);
request.Method = WebRequestMethods.Ftp.MakeDirectory;
request.Credentials = new NetworkCredential(ftpUser, ftpPassword);
using (var resp = (FtpWebResponse)request.GetResponse())
{
resp.Close();
}
所以我们做了一些测试来找出问题所在
我们发现如果我们从ftp目录中删除一些带有文件的目录,它将恢复正常,用户可以再次通过c#ftp上传应用程序上传文件。
我猜如果ftp可以设置目录或文件的最大数量,如果目录的数量达到设置,它将关闭连接
最后,我们尝试使用Wireshark查看ftp数据包。并发现一个信息,正常ftp数据包和非正常ftp数据包之间的差异是“响应:指定的网络名称不再可用。”
正常ftp数据包响应:250 CWD命令成功。请求:PASV响应:227进入被动模式(172,25230110212,41)。请求:NLST OAP响应:125数据连接已打开;换乘开始。答复:226传输完成。请求:CWD/响应:250 CWD命令成功。
异常ftp数据包响应:250 CWD命令成功。请求:PASV响应:227进入被动模式(172,25230110201251)。请求:NLST OAP响应:125数据连接已打开;换乘开始。响应:指定的网络名称不再可用。答复:220 Microsoft FTP服务
有人知道ftp是否可以设置每个目录的最大目录吗?帮助将不胜感激。
MSDN似乎认为您的路径是相对的,因此它试图使用提供的凭据登录到FTP服务器,然后将当前目录设置为 /path目录。如果这不是你的文件所在的目录,你会得到一个550的错误。
显然这也可能是防病毒干扰。
我们已经做了一些额外的测试,所以我想我会回来更新。自从我禁用AVG的常驻屏蔽后,我们就停止接收错误消息
和
这在VPN位置之间发生在我身上。SonicWALL已打开网关防病毒软件,它正在阻止CIFS/Netbios通信。我刚刚关掉了网关AV的那部分。现在工作。
https://community.spiceworks.com/topic/239423-the-specified-network-name-is-no-longer-available-while-writing-to-shared-dir