Cómo eliminar la barra diagonal adicional de URI cuando convertí NSUrl a URI.
Cuando intento convertir NSUrl a URI, se agrega una barra adicional en la URL. A continuación se muestra el método:
public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
{
Uri uri = new Uri(url.AbsoluteString);
ViewController.Auth?.OnPageLoading(uri);
return true;
}
Salida: uri=msauth.com.xxxxx.xxxxxxxx://auth/?code=ae49c2974f4a5ce7becc6ccc95ef98ac8c93cd314aeda9b46254e6f0e6f80957&scope=TriggerApi%20offline_access&state=dshrscvaicthdifb
Resultado esperado: uri=msauth.com.xxxxx.xxxxxxxx://auth?code=ae49c2974f4a5ce7becc6ccc95ef98ac8c93cd314aeda9b46254e6f0e6f80957&scope=TriggerApi%20offline_access&state=dshrscvaicthdifb
¿Alguien más ha encontrado este problema?
davy.ai
Sí, algunos desarrolladores han encontrado un problema similar al convertir NSUrl a URI en C#. El problema es que la clase NSUrl incluye una barra diagonal al final después del nombre de host y número de puerto, a menos que la URL termine con una barra diagonal. Esto puede causar que algunas URI estén mal formadas, como se muestra en la salida anterior.
Una forma de solucionarlo es eliminar la barra diagonal al final de la propiedad AbsoluteString de NSUrl, antes de usarla para crear la URI. Por ejemplo, podrías agregar la siguiente línea antes de crear la URI:
O, alternativamente, podrías usar la clase UriBuilder para construir la URI, que elimina automáticamente cualquier barra diagonal duplicada:
De cualquier manera, el resultado esperado debería ser una URI sin la barra diagonal adicional después del segmento “auth”.