【问题标题】:Is there something similar to C# connection string for FTP connection?是否有类似于用于 FTP 连接的 C# 连接字符串的东西?
【发布时间】:2019-07-04 03:04:33
【问题描述】:

是否有类似于 C# 连接字符串的 FTP 连接?我可以写成一个完整的字符串并轻松管理的东西,例如:

ftp://username:password@domain:port

我会详细解释我正在尝试做的事情。我正在编写一个小型控制台应用程序,让我们保持这个示例简单,从 FTP 下载所有文件。例如,我想使用类似于我们用于 nuget 包的命令行查询。一个很好的例子就是这个:

Update-database -connectionString "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Local;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True" -ConnectionProviderName "System.Data.SqlClient" -verbose

所以对于我的 FTP,它仍然类似于

Download-Ftp -ftp "ftp://usr202:P@ssw0rd@example.com:21"

还有更多的细节,比如

Download-Ftp -ftp "ftp://usr202:P@ssw0rd@example.com:21;Sftp=false;AnyOtherFtpParameter=value"

我当然可以自己做。我现在的问题是。是否已经有一些东西、一些标准、更好的方法来管理这个或什么都没有?

【问题讨论】:

  • 您只需要以某种方式在您的P@ssw0rd 中转义@。您可以为此使用UriBuildernew UriBuilder("ftp", "example.com", 21) { UserName = "usr202", Password = Uri.EscapeDataString("P@ssw0rd") }.Uri
  • 对于SFTP,使用sftp://,而不是ftp:// URL的Sftp参数。

标签: c# ftp


【解决方案1】:

对于格式正确的 FTP URL,您可以使用标准的 System.Uri 类。

您的第二个带有额外选项的示例不是格式正确的 URL,我建议您不要实施这样奇怪的东西。

由于您正在编写命令行应用程序,因此我建议您为这些额外设置实现命令行选项(即开关)。

【讨论】:

  • 有趣的链接。我仍在阅读它,但我还有一个关于此的问题,以供确认。 Uri 可以表示文件或文件夹,对吗? (以及我猜的许多其他事情)
  • 是的。为简单起见,只需将其视为一个 URL,就像您现在在地址栏中看到的一样。
  • +1 – 虽然请注意 URL 可以包含其他参数 – 虽然它很少使用,如果有的话。见Parameters in Path Segments of URL
  • @Martin 非常有趣,谢谢!我想我想说的是 OP 提供的不是标准 FTP URL 的一部分,所以他不应该尝试使用非标准的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 2020-04-23
  • 1970-01-01
  • 2011-12-04
  • 2011-01-07
  • 1970-01-01
相关资源
最近更新 更多