Dim x AS New URI("http://www.example.com/test//test.asp")
Dim rel AS New URI("http://www.example.com/xxx/xxx.asp")
Console.Writeline(x.MakeRelativeUri(rel).Tostring())
Aquí salida es:Normalización URI para hacer que funcione correctamente con MakeRelativeUri
../../xxx/xxx.asp
que parece correcta casi todos los servidores web procesarán los dos de los siguientes como misma petición:
http://www.example.com/test//test.asp
http://www.example.com/test/test.asp
¿Cuál es la mejor manera de corregir este comportamiento si hay alguna API para hacer esto, o crear manualmente un nuevo URI y eliminar todo // en la ruta?
Ese código es truco muy cruda, ya que no va a funcionar en varios escenarios, el más obvio http://example.com/test///xxx en segundo lugar a pesar de que no está muy bien codificado esto es un alambique URI válido: http://example.com/?bla=//Whatup –
Dr.Evil: una URL válida depende en gran medida del servidor web que la interpreta, y qué tan sólida ha decidido ser al analizar las URL. Como el marco no hace toda la limpieza como lo desea, cree usted mismo una función "makerelativeurl" que verifique y limpie las barras de forma adecuada. ¿Debería seguir el RFC o manejar casos donde el URL es claramente incorrecto? .) –