以下代码抛出System.UriFormatException:
var uri = new UriBuilder("ftp://user:pass#word@ftp.somewhere.com:21/fu/bar.zip");
Run Code Online (Sandbox Code Playgroud)
System.UriFormatException:无效的URI:由于存在冒号(':')而无法解析端口,因此需要端口.
从密码字段中删除#符号可以解决问题.
谢谢,安德鲁
Pau*_*ane 12
您应该可以使用%23代替.
百分号后跟两位十六进制数字是如何在URL中转义字符.23是ASCII表中的散列/井号符号的十六进制值.
您应该通过编码整个用户名和密码字段来解决此问题,而不是解决此特定问题.你应该可以这样做System.Web.HttpUtility.UrlEncode(参考System.Web程序集):
string username = ...
string password = ...
string url = string.Format("ftp://{0}:{1}@ftp.example.com:21/fu/bar.zip", HttpUtility.UrlEncode(username),
HttpUtility.UrlEncode(password));
Run Code Online (Sandbox Code Playgroud)