2016-10-03 1 views
3

I 도트 세그먼트와 URI 생성 :Uri 클래스를 사용하여 URL에 점 세그먼트를 유지하는 방법이 있습니까?

var uri = new Uri("http://localhost/../../g"); 

열린 클래스 ../ 세그먼트 결과 URI가된다 제거를 :

http://localhost/g 

점 전의 경로가 :

var uri = new Uri("http://localhost/a/b/c/./../../g"); 
// Result: http://localhost/a/g 

Uri 클래스는 다음과 같습니다. the standart (페이지 33 - remove_dot_segments),하지만 Uri 클래스를 사용하여 자동으로 대상 URI를 해결하는 대신 점 세그먼트를 유지할 수있는 방법이 있습니까? 아니면 맞춤 구현이 필요합니까?

+0

당신은 'uri.OriginalString'을 사용할 수 있습니다. – KSib

+0

@KSib OriginalString은 요청을 보낼 때 중요하지 않습니다. AbsoluteUri는 –

답변

1

HTTP를 사용하는 경우 no를 사용하면 Uri 클래스를 사용하면 항상 HTTP가 사용됩니다. 다음과 같은 경우 모두 이스케이프 처리됩니다. file, http, https, net.pipe, and net.tcp

ftp과 같은 것을 사용하는 경우 탈출하지 않지만 옵션이 아닌 것 같습니다. MSDN's documentation에서

는 :

어떤 계획에 대한 생성자에서 표준화의 일환으로, 는 표현이 압축되어 탈출했다. URI가 인 컴팩트 이스케이프 시퀀스에는 file, http, https, net.pipe 및 net.tcp가 포함됩니다. 다른 모든 스키마의 경우 이스케이프 시퀀스는 은 압축되지 않음입니다. 예를 들어 백분율로 두 개의 점 "."을 "% 2E % 2E"로 인코딩하면 URI 생성자는 스키마에 대해이 시퀀스를 압축합니다. 예를 들어 다음 코드 샘플은 http 체계에 대한 URI 생성자를 보여줍니다.

+0

의 문제로 불행합니다. 내가 원하는 것을하는 제 3 자 라이브러리에 대해 알고 있습니까? –

+0

아마도 당신이하고 싶은 것이 정확히 무엇입니까? 'http : // ... 'Uri에 점을 가진'Uri' 객체를 반환하고 싶다면 여러분은 운이 없다고 생각합니다. 만약 당신이 단지 문자열 표현을 원한다면 나는 당신이 뭔가를 할 수있을 것이라고 확신합니다. –

+0

나는 점을 유지하고 그 정확한 URL에 대한 요청을 만들고 싶습니다. WebRequest 클래스가 같은 standarts를 따르고 있기 때문에 맞춤 uri 구현이 필요하지 않을 것입니다. –