Poniższy wiersz kodu podaje wyjątek. Czy jest to błąd w strukturze? Jeśli nie, jakie podejście mógłbym zastosować?dlaczego dwukropek ":" w Uri przekazany do Uri.MakeRelativeUri powoduje wyjątek?
Wydaje się być „:” (dwukropek), który powoduje, że w tej kwestii, jednak ja widzę taki URI pracy na stronach produkcyjnych OK (tzn wydaje się być prawidłowy URI w realnym świecie)
Uri relativeUri = new Uri("http://test.com/asdf").MakeRelativeUri(new Uri("http://test.com/xx:yy"));
// gives => System.UriFormatException: A relative URI cannot be created because the
// 'uriString' parameter represents an absolute URI
Uri relativeUri = new Uri("http://test.com/asdf").MakeRelativeUri(new Uri("http://test.com/xxyy"));
// this works - removed the colon between the xx and yy
PS. W szczególności mogę zapytać, biorąc pod uwagę powyższe przypadki, do jakiej klasy/metody .NET mogę użyć (zauważając, że parsuję stronę HTML z sieci), aby wziąć (a) identyfikator strony i (b) względny ciąg znaków z kodu HTML Argument HREF [np byłby "/ xx: rr" w tym przypadku] i zwrócił prawidłowy identyfikator URI, który mógłby być użyty do adresowania tego zasobu?
Innymi słowy, w jaki sposób mogę naśladować zachowanie przeglądarki, która tłumaczy HREF i identyfikator URI strony, aby utworzyć identyfikator URI, którego używa, aby przejść do tego zasobu, gdy go klikniesz.
Jon Postel: "bądźcie liberalni w tym, co akceptujecie i zachowawczo w tym, co wyślecie". Proszę podać RFC i jego numer akapitu, które potwierdzają, że jest to poprawny URI. –