Pregunta

¿Cómo puedo resolver una ruta virtual a un archivo en una ruta, adecuada para el navegador, desde un manejador .ashx genérico?

por ejemplo, quiero convertir:

~/asp/ClockState.aspx

dentro

/NextAllowed/asp/ClockState.aspx

Si yo fuera una forma web Page, podría llamar ResolveUrl:

Page.ResolveUrl("~/asp/ClockState.aspx")

que resuelve:

/NextAllowed/asp/ClockState.aspx

Pero no soy una página de Forma web, soy un manejador genérico. Tú lo sabes IHttpHandler Objeto con todo tipo de cosas inyectadas:

public class ResetClock : IHttpHandler 
{
    public void ProcessRequest (HttpContext context) 
    {
        //[process stuff]

        //Redirect client
        context.Response.Redirect("~/asp/ClockState.aspx", true);
    }

    public bool IsReusable { get { return false; } }
}
¿Fue útil?

Solución

Puede usar la clase VirtualPathutility para hacer esto. Esto contiene varios métodos para trabajar con rutas. El que necesita es ToabSolute (), que convertirá una ruta relativa a una absoluta.

var path = VirtualPathUtility.ToAbsolute("~/asp/ClockState.aspx");

Sin embargo, puede usar el Tilde en respuesta. Redirect Llamadas de todos modos, por lo que lo siguiente aún funcionaría:

Response.Redirect("~/asp/ClockState.aspx");

No necesita convertir la URL en una ruta absoluta antes de usar respuesta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top