gpt4 book ai didi

c# - 替代 .NET 的 Uri 实现?

转载 作者:太空狗 更新时间:2023-10-29 18:30:38 25 4
gpt4 key购买 nike

我对 .NET 的 Uri 实现有疑问。似乎如果方案是“ftp”,则查询部分不会被解析为查询,而是作为路径的一部分。

以下面的代码为例:

Uri testuri = new Uri("ftp://user:pass@localhost/?passive=true");
Console.WriteLine(testuri.Query); // Outputs an empty string
Console.WriteLine(testuri.AbsolutePath); // Outputs "/%3Fpassive=true"

在我看来,Uri 类错误地将查询部分解析为路径的一部分。然而将方案更改为 http,结果如预期的那样:

Uri testuri = new Uri("http://user:pass@localhost/?passive=true");
Console.WriteLine(testuri.Query); // Outputs "?passive=true"
Console.WriteLine(testuri.AbsolutePath); // Outputs "/"

有没有人对此有解决方案,或者知道可以按预期工作的替代 Uri 类?

最佳答案

好吧,问题不是我无法创建 FTP 连接,而是 URI 未根据 RFC 2396 进行解析。

我实际上打算做的是创建一个工厂,它根据给定的连接 URI 提供通用文件传输接口(interface)(包含 get 和 put 方法)的实现。 URI 定义协议(protocol)、用户信息、主机和路径,任何需要传递的属性都应通过 URI 的查询部分传递(例如 FTP 连接的被动模式选项)。

然而,使用 .NET Uri 实现证明这很困难,因为它似乎根据架构以不同方式解析 URI 的查询部分。

所以我希望有人知道解决这个问题的方法,或者知道看似损坏的 .NET Uri 实现的替代方法。在花费数小时实现我自己的之前知道这一点会很高兴。

关于c# - 替代 .NET 的 Uri 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com