System.Uri 클래스가 생성자에 전달 된 인코딩 된 URL을 인코딩 해제하지 않도록하려면 어떻게해야합니까? 다음 코드를 고려하십시오. -System.Uri에서 URL 인코딩 해제를 중단하려면 어떻게해야합니까?
Uri uri = new Uri("http://foo.bar/foo%2FBar");
Console.WriteLine(uri.AbsoluteUri);
uri = new Uri("http://foo.bar/foo%2FBar", false);
Console.WriteLine(uri.AbsoluteUri);
uri = new Uri("http://foo.bar/foo%2FBar", true);
Console.WriteLine(uri.AbsoluteUri);
각 경우 출력은 "http://foo.bar/foo/bar"입니다. Uri 인스턴스를 인스턴스화 한 후 Uri.AbsoluteUri가 "http://foo.bar/foo%2FBar"를 반환하도록하려면 어떻게해야합니까?
사람이 할 수있는 방법 (해킹)을 발견 보인다. 내 문제는 실제로 HttpWebRequest 인스턴스를 구성하여 URL에서 이스케이프 처리 된 문자 (위에서 설명한 바와 같이 슬래시 포함)가있는 REST 호출을 만들 때 발생합니다. 요청을 생성하기 위해 WebRequest.Create (UrlString) 오버로드를 사용하고 있으며 서버에 전달되는 URL이 인코딩 된 슬래시를 인코딩 해제하여 서버 측 오류를 일으킨다는 것을 알아 냈습니다. 더 많은 테스트 결과에 따르면 이것이 Uri 클래스의 문제 일 가능성이 높습니다. – Cleggy
업데이트에서 링크보기 – PinnyM
링크를 보내 주셔서 감사합니다, PinnyM. "끔찍한 해킹"성질로 인해, 나는 그 길로 가야하는지, 아니면 내 문제를 해결하기 위해 또 다른 압정을 완전히 가져야하는지 궁금합니다. 현재 REST 서비스를 호출하려고 시도하고 있지만 SOAP 대신 SOAP로 변경하는 유연성이 있으며이 문제도 완화해야합니다. 그럼에도 불구하고, 당신은이 특별한 문제를 해결했습니다, 그래서 나는 이것을 정답으로 표시 할 것입니다. – Cleggy