반응형
Uri.ToString ()과 Uri.AbsoluteUri의 차이점은 무엇입니까?
방금 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
되는 상대는 Uri
AbsoluteUri
실패합니다 ToString()
없습니다.
Uri uri = new Uri("fuu/bar.xyz", UriKind.Relative);
string str1 = uri.ToString(); // "fuu/bar.xyz"
string str2 = uri.AbsoluteUri; // InvalidOperationException
올바른 것을 확인하고 사용하지 않으시겠습니까?
string GetUrl(Uri uri) => uri?.IsAbsoluteUri == true ? uri?.AbsoluteUri : uri?.ToString();
모두가 그것이 uri.AbsoluteUri
더 낫다고 생각하는 것 같지만 상대 경로로 실패하기 때문에 아마도 보편적 인 방법은 다음과 같습니다.
Uri uri = new Uri("fuu/bar.xyz", UriKind.Relative);
string notCorruptUri = Uri.EscapeUriString(uri.ToString());
반응형
'programing' 카테고리의 다른 글
시작시 Windows 7에서 관리자로 프로그램을 자동으로 실행하는 방법은 무엇입니까? (0) | 2020.09.25 |
---|---|
M_PI는 math.h에서는 작동하지만 Visual Studio의 cmath에서는 작동하지 않습니다. (0) | 2020.09.25 |
ggplot2 객체에 대한 플롯 축의 범위를 어떻게 추출 할 수 있습니까? (0) | 2020.09.25 |
Node의 http.request ()에 시간 제한을 설정하는 방법은 무엇입니까? (0) | 2020.09.24 |
애플리케이션에 유효한 'aps-environment'자격 문자열이 없습니다. (0) | 2020.09.24 |