방금 Azure 질문에 대한 의견으로 @smarx가 언급했습니다.
일반적으로 blob.Uri.ToString ()보다 blob.Uri.AbsoluteUri를 수행하는 것이 더 낫다고 생각합니다.
이것에 대한 이유가 있습니까? Uri.AbsoluteUri"절대 URI를 가져옵니다", Uri.ToString()"지정된 인스턴스에 대한 표준 문자열 표현을 가져 옵니다"라는 메모에 대한 문서입니다 .
방금 Azure 질문에 대한 의견으로 @smarx가 언급했습니다.
일반적으로 blob.Uri.ToString ()보다 blob.Uri.AbsoluteUri를 수행하는 것이 더 낫다고 생각합니다.
이것에 대한 이유가 있습니까? Uri.AbsoluteUri"절대 URI를 가져옵니다", Uri.ToString()"지정된 인스턴스에 대한 표준 문자열 표현을 가져 옵니다"라는 메모에 대한 문서입니다 .
답변:
예를 들면 다음과 같습니다.
UriBuilder builder = new UriBuilder("http://somehost/somepath");
builder.Query = "somekey=" + HttpUtility.UrlEncode("some+value");
Uri someUri = builder.Uri;
이 경우
Uri.ToString()사람이 읽을 수있는 URL을 반환합니다. http : // somehost / somepath? somekey = some + value
Uri.AbsoluteUri 반면에 HttpUtility.UrlEncode가 반환 한대로 인코딩 된 양식을 반환합니다. http://somehost/somepath?somekey=some%2bvalue
모두가 그것이 uri.AbsoluteUri더 낫다고 생각하는 것처럼 보이지만 상대 경로로 실패하기 때문에 아마도 보편적 인 방법은 다음과 같습니다.
Uri uri = new Uri("fuu/bar.xyz", UriKind.Relative);
string notCorruptUri = Uri.EscapeUriString(uri.ToString());
올바른 것을 확인하고 사용하지 않으시겠습니까?
string GetUrl(Uri uri) => uri?.IsAbsoluteUri == true ? uri?.AbsoluteUri : uri?.ToString();
다음 예에서는 Uri 인스턴스의 전체 콘텐츠를 콘솔에 씁니다. 표시된 예에서
http://www.cartechnewz.com/catalog/shownew.htm?date=today
콘솔에 기록됩니다.
Uri baseUri = new Uri("http://www.cartechnewz.com");
Uri myUri = new Uri(baseUri, "catalog/shownew.htm?date=today");
Console.WriteLine(myUri.AbsoluteUri);
AbsoluteUri 속성에는 모든 조각 및 쿼리 문자열을 포함하여 Uri 인스턴스에 저장된 전체 URI가 포함됩니다.