Uri 테스트 = 새 Uri (새 Uri ("http://www.google.com/test"), "foo");Uri을 사용하는 상대 경로
반환
http://www.google.com/foo하지만 열린 우리당 테스트 = 새로운 열린 우리당 (새 열린 우리당 ("http://www.google.com/test/"), "foo는");
반환 http://www.google.com/foo/test
마지막 슬래시가 매우 중요한 것 같다,
Uri 테스트 = 새 Uri (새 Uri ("http://www.google.com/test"), "foo");Uri을 사용하는 상대 경로
반환
http://www.google.com/foo하지만 열린 우리당 테스트 = 새로운 열린 우리당 (새 열린 우리당 ("http://www.google.com/test/"), "foo는");
반환 http://www.google.com/foo/test
마지막 슬래시가 매우 중요한 것 같다,
글쎄, 당신은 당신의 기본 URI는 /
문자로 끝나는 있는지 확인해야합니다!
public Uri CombineUris(string baseUri, string relativeUri)
{
if (!baseUri.EndsWith("/")) {
baseUri += "/";
}
return new Uri(new Uri(baseUri), relativeUri);
}
이 (가) /
후행 루트 URI를 통과해야합니다 모든 경우에 http://www.google.com/foo/test를 반환하는 통일 된 방법이있다. 마지막 슬래시는 매우 중요합니다. http://www.example.com/foo/bar.html, bar2.html
을 고려하십시오. 이는 http://www.example.com/foo/bar2.html
으로 해결되어야합니다.
Uri test = new Uri(new Uri(GetSafeURIString("http://www.google.com/test")), "foo");
private static string GetSafeURIString(uri)
{
if(uri == null)
return uri;
else
return uri.EndsWith("/") ? uri : uri + "/";
}
그것은 당신의'URI처럼 보인다 = null' 조건은 반전된다. –
null! = uri는 C/C++ 환경에서 우수 사례였습니다. 그러나 C#에서는 항상 부울을 예상하므로 실수로 할당 할 필요가 없습니다. – Ramesh
아니, 나는 당신이'uri '가 아닌'null'이라면 반환하겠다는 뜻이다. 나는 그것이 *'null' 인 경우에 당신이 그것을 돌려주고 싶다고 생각한다. :) –