Pregunta

Para que sea más sencillo para una aplicación web para compartir archivos con otra aplicación en un servidor diferente, estoy usando una etiqueta base href en mi página maestra. Como muchas personas han descubierto, esto rompe caminos WebForm. Tengo una clase adaptador Forma de trabajo, pero no estoy seguro de cómo obtener la ruta absoluta de la URL. Actualmente, mi programa está codificado para usar algo similar a:

HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;

Vale la pena señalar que estoy probando actualmente en mi servidor local de IIS, por lo que hay una extraña tendencia a que una gran cantidad de cosas que he intentado usar en orden lo que la ruta absoluta no incluyen el nombre de dominio (mi local de IIS no es visible externamente). Lo que significa que no es una ruta absoluta y así el href base será destruirlo.

¿Hay una buena manera de manejar esto de tal manera que va a trabajar localmente sin codificar, sino también funcionará correctamente cuando se envían a un servidor? Yo preferiría evitar todo lo que implica hacer algo diferente en la copia del lado del servidor.

Sí, me doy cuenta de que podría utilizar archivos Web.config separada a nivel local y en el servidor para obtener esta información, pero esto es fea y viola SECO.

¿Fue útil?

Solución

He utilizado este en el pasado:

// Gets the base url in the following format: 
// "http(s)://domain(:port)/AppPath"
HttpContext.Current.Request.Url.Scheme 
    + "://"
    + HttpContext.Current.Request.Url.Authority 
    + HttpContext.Current.Request.ApplicationPath;

Otros consejos

Mensaje viejo pero aquí es otro método ligeramente menos detallado

var baseUri = new Uri(HttpContext.Current.Request.Url, "/");

He utilizado siguiente y funcionó para mí tanto el cliente y el servidor.

string surl = string.Format("{0}://{1}",
    HttpContext.Current.Request.Url.Scheme,
    HttpContext.Current.Request.Url.Authority);

Código:

string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top