【问题标题】:Documentation for Finer Points of FtpWebRequestFtpWebRequest 更详细的文档
【发布时间】:2011-03-09 19:15:41
【问题描述】:

我正在为 .NET 创建一个通用 FTP 类。我似乎做得很好,但有一些细节我有点不确定。而诸如 MSDN 上的文档完全没有提供有关这些细节的信息。

例如,在执行WebRequestMethods.Ftp.UploadFileWebRequestMethods.Ftp.RemoveDirectory 等请求方法时,我可以安全地忽略响应的内容吗?或者我需要检查响应中的信息吗?

我很确定GetResponse() 对几乎所有错误情况都会抛出异常,但我怎么能确定呢?同样,文档似乎并未涵盖此类信息。

谁能解决这个问题或推荐我应该使用的文档?

【问题讨论】:

  • 经验告诉我,.NET FTP 类并不适用于每个 FTP 服务器。因此,我强烈建议您仅将这些类用于特定服务器。当您不知道您的应用将连接到哪个服务器时,您应该使用第三方库。
  • @Jader:嗯,谢谢。当然,那些第三方库必须以某种方式工作。也许你是说,如果我想与每个服务器兼容,我需要更深入地挖掘。
  • @Jon 好吧,如果您想更深入地了解,我建议您阅读 FTP 协议标准
  • @Earlz:是的,这就是我的结论。不幸的是,这不会告诉我有关 FtpWebRequest 的更多详细信息,或者它何时可能引发异常以及何时可能需要进行其他测试来检测错误情况。
  • @Jon 好吧,如果一切都失败了,我相信微软发布了所有 .Net 的源代码(尽管是在非开源许可下),所以你可以自己挖掘并记录它......或全部否则使用反射器和试错失败:P

标签: c# .net ftp ftpwebrequest


【解决方案1】:

是的,您可以忽略这些;但是我建议确保以受控方式访问这些内容并在 try...finally 标记中,确保响应在 finally 标记中关闭:

using (FtpWebResponse response = (FtpWebResponse)ftpWebRequest.GetResponse())
        {
            try
            {
                using (Stream dataStream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(dataStream))
                    {
                       return reader.ReadToEnd();
                    }
                }
            }
            finally
            {
                response.Close();
            }
        }

【讨论】:

  • 你确定吗?能否提供证明链接?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 2017-01-30
  • 2013-03-16
相关资源
最近更新 更多