【问题标题】:FtpWebRequest.GetRequestStream() - Unable to connect to the remote server - only sometimesFtpWebRequest.GetRequestStream() - 无法连接到远程服务器 - 只是有时
【发布时间】:2017-09-21 12:25:35
【问题描述】:

我正在尝试将文件上传到第 3 方 FTP 服务器。它在大多数情况下是成功的,但有时可能会持续几分钟而失败。当我调用GetRequestStream() 并且消息是Unable to connect to the remote server 时引发异常,没有内部异常或其他信息。我的请求的超时设置为 100000,但在 20 秒左右的某个时间引发了异常。

我还记录了请求时 FTP 服务器的 IP 地址,我看到相同的 IP 地址有时会工作,有时会无法连接,所以我认为这不是防火墙问题。

Upload 方法用作使用 ASP.NET Web API 的 API 调用的一部分,用户通过此 API 调用触发上传。

代码:

try
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(hostURI);
    request.Method = WebRequestMethods.Ftp.UploadFile;
    request.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["FTPUser"], ConfigurationManager.AppSettings["FTPPW"]);
    request.EnableSsl = true;
    request.KeepAlive = false;

    byte[] fileContents;
    using (var readStream = System.IO.File.OpenRead(pathToFile))
    {
        fileContents = new byte[readStream.Length];
        readStream.Read(fileContents, 0, fileContents.Length);
        readStream.Close();
    }

    request.ContentLength = fileContents.Length;

    Stream requestStream = request.GetRequestStream();
    requestStream.Write(fileContents, 0, fileContents.Length);
    requestStream.Close();

    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    response.Close();
}
catch (Exception e)
{
    Debug.WriteLine("Message: " + e.Message + ", Stack Trace: " + e.StackTrace + ", Inner Exception: " + e.InnerException);
}

例外:

System.Net.WebException:无法连接到远程服务器 System.Net.FtpWebRequest.GetRequestStream() 在 PGServer.Helpers.FTPHelper.Upload(String pathToFile, String ftpFolderName, String newFileName)

【问题讨论】:

  • 当您无法使用您的代码传输文件时,您是否可以使用独立的 FTP 客户端在相同的两台机器之间传输文件?
  • @MartinPrikryl 很难捕捉上传在代码中不起作用的时间范围,但我确实尝试在代码中请求失败后立即使用 filezilla 连接和上传,我没有任何问题。但是,我尝试在 filezilla 成功后再次从代码中发送,并且成功了,所以很难说这是否是一个好的测试。
  • 如果没有这些信息,就很难判断问题所在。
  • @MartinPrikryl 我只是尝试一个接一个地发送 2 个请求(通过在不到 1 秒的时间内调用我的 API 方法两次),一个成功,一个失败。不确定这是否有帮助。其他时候,他们都成功地紧跟在另一个之后。
  • 您是否尝试使用某些可编写脚本的 FTP 客户端(例如 WinSCP)编写频繁的连接/上传/断开连接脚本?检查您是否遇到同样的问题。

标签: c# asp.net asp.net-web-api ftp ftpwebrequest


【解决方案1】:

同样的错误。ftp 可以安全运行一年以上。最近它显示“无法连接到远程服务器 在 System.Net.FtpWebRequest.GetRequestStream()" 这里我做了什么: 0 卸载杀毒软件。 1 重启ftp所在的电脑。就可以了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2011-04-29
    • 2010-11-13
    • 2017-06-26
    相关资源
    最近更新 更多