¡Primera pregunta!Obtener url original sin puerto no estándar (C#)
Medio Ambiente
MVC, C#, AppHarbor.
Problema
Estoy llamando a un proveedor de OpenID, y generar una URL de devolución de llamada absoluta basada en el dominio.
en mi máquina local, esto funciona bien si golpeo http://localhost:12345/login
Request.Url; //gives me `http://localhost:12345/callback`
Sin embargo, en AppHarbor donde estoy despliegue, porque están utilizando puertos no estándar, incluso si estoy golpeando al "http://sub.example.com/login"
Request.Url; //gives me http://sub.example.com:15232/callback
Y esta tornillos hasta mi devolución de llamada, debido a que el número de puerto no estaba en la URL de la fuente original!
He intentado
- Request.Url
- Request.Url.OriginalString
- Request.RawUrl
Todo a mi "http://sub.example.com:15232/callback" da.
también para aclarar que esto no es un problema de Realm, el mensaje de error que estoy recibiendo de DotNetOpenAuth es
'http://sub.example.com:14107/accounts/openidcallback' not under realm 'http://*.example.com/'.
No creo que he de peluche que pasa?
ahora, estoy a punto de tener en cuenta algunas cosas como hacky
- comandos del preprocesador (#IF DEBUG luego poner puerto)
- cadena de reemplazo (Request.URL.Contains ("localhost"))
Todas estas soluciones no son del 100%, pero estoy cansado de reflexionar sobre lo que podría ser una propiedad simple que me falta. También he leído this pero eso no parece tener una respuesta aceptada (y se trata más de la ruta que de la autoridad). Así que lo estoy planteando para ustedes, chicos.
Resumen
Así que si tuviera http://localhost:12345/login
, que necesita para obtener http://localhost:12345/callback
del contexto de la petición.
Y si tuviera "http://sub.example.com/login", debería obtener "http://sub.example.com/callback", independientemente de en qué puerto esté.
Gracias!(Tiempo de sueño, responderá a cualquier pregunta en la mañana)
Terminé usando UrlReferrer (esto no tiene el puerto por alguna razón GRR!), Pero su mensaje me llevó hacia allí. No estoy seguro de ninguna ramificación, pero gracias de todos modos :) –
¿Intentó utilizar algún javascript para obtener el puerto? podrías pasarlo en la cadena de consulta o publicarlo de nuevo. – Robert
Eso es bastante hacky, no es algo en lo que quiera confiar. –