Sebagai komentar untuk pertanyaan Azure barusan, @smarx mencatat
Menurut saya biasanya lebih baik melakukan blob.Uri.AbsoluteUri daripada blob.Uri.ToString ().
Apakah ada alasan untuk ini? Dokumentasi untuk Uri.AbsoluteUri
catatan bahwa "Mendapat URI absolut", Uri.ToString()
"Mendapat representasi string kanonis untuk instance yang ditentukan".
Jawaban:
Diberikan misalnya:
UriBuilder builder = new UriBuilder("http://somehost/somepath"); builder.Query = "somekey=" + HttpUtility.UrlEncode("some+value"); Uri someUri = builder.Uri;
Dalam kasus ini,
Uri.ToString()
akan mengembalikan URL yang dapat dibaca manusia: http: // somehost / somepath? Somekey = some + valueUri.AbsoluteUri
di sisi lain akan mengembalikan bentuk yang dikodekan sebagai HttpUtility.UrlEncode mengembalikannya:http://somehost/somepath?somekey=some%2bvalue
sumber
OriginialString
daripadaToString()
[ docs.microsoft.com/en-us/dotnet/api/…Selain itu: Jika Anda
Uri
adalah kerabat AndaUri
AbsoluteUri
akan gagal,ToString()
bukan.Uri uri = new Uri("fuu/bar.xyz", UriKind.Relative); string str1 = uri.ToString(); // "fuu/bar.xyz" string str2 = uri.AbsoluteUri; // InvalidOperationException
sumber
Karena semua orang tampaknya berpikir itu
uri.AbsoluteUri
lebih baik, tetapi karena gagal dengan jalur relatif, maka mungkin cara universal adalah:Uri uri = new Uri("fuu/bar.xyz", UriKind.Relative); string notCorruptUri = Uri.EscapeUriString(uri.ToString());
sumber
Mengapa tidak memeriksa dan menggunakan yang benar?
string GetUrl(Uri uri) => uri?.IsAbsoluteUri == true ? uri?.AbsoluteUri : uri?.ToString();
sumber
Contoh berikut menulis konten lengkap dari instance Uri ke konsol. Dalam contoh yang ditunjukkan,
http://www.cartechnewz.com/catalog/shownew.htm?date=today
ditulis ke konsol.
Uri baseUri = new Uri("http://www.cartechnewz.com"); Uri myUri = new Uri(baseUri, "catalog/shownew.htm?date=today"); Console.WriteLine(myUri.AbsoluteUri);
Properti AbsoluteUri menyertakan seluruh URI yang disimpan dalam instance Uri, termasuk semua fragmen dan string kueri.
sumber