作为对Azure问题的评论,@ smarx指出
我认为blob.Uri.AbsoluteUri通常比blob.Uri.ToString()更好.
是否有一个原因?它的文档Uri.AbsoluteUri
"获取绝对URI",Uri.ToString()
"获取指定实例的规范字符串表示形式".
Ofe*_*lig 96
举个例子:
UriBuilder builder = new UriBuilder("http://somehost/somepath");
builder.Query = "somekey=" + HttpUtility.UrlEncode("some+value");
Uri someUri = builder.Uri;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,
Uri.ToString()
将返回一个人类可读的URL:http:// somehost/somepath?somekey = some + value
Uri.AbsoluteUri
另一方面将返回编码形式为HttpUtility.UrlEncode返回它: http://somehost/somepath?somekey=some%2bvalue
ord*_*dag 28
另外:如果你Uri
是亲戚 Uri
AbsoluteUri
会失败,ToString()
不是.
Uri uri = new Uri("fuu/bar.xyz", UriKind.Relative);
string str1 = uri.ToString(); // "fuu/bar.xyz"
string str2 = uri.AbsoluteUri; // InvalidOperationException
Run Code Online (Sandbox Code Playgroud)
为什么不检查并使用正确的?
string GetUrl(Uri uri) => uri?.IsAbsoluteUri == true ? uri?.AbsoluteUri : uri?.ToString();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43004 次 |
最近记录: |