Pregunta

Estoy trabajando en un proyecto que necesita tomar la URL real y usarla en la ruta misma. Todo lo que veo, leo y pruebo permite que la ruta tome los elementos después de la URL del sitio. Esto es lo que he intentado y cada vez simplemente dice que el sitio está en blanco (lo que probablemente se deba al valor predeterminado de vacío). ¿Puedes arrojarme algunos huesos al permitir que la ruta también utilice la URL raíz? El objetivo es un sitio web que procese la URL y me dirija a diferentes agallas una vez dentro de la Vista.

Aquí está el código que he intentado pero sin suerte fuera de localhost

            routes.MapRoute(
            "PageRouter",
            "{site}/{*url}",
            new { controller = "PageRouter", action = "RoutePage", site = "", url = "" }
        );

Su ayuda es muy apreciada. Gracias de antemano

¿Fue útil?

Solución

¿Qué hay de usar HttpContext.Request.RawUrl dentro de la acción del controlador? Puede que me esté perdiendo algo aquí. ¿De dónde viene la url que quieres leer? ¿Es la página actual u otra página?

Otros consejos

La respuesta de Nathan es parte de la respuesta. El HttpContext.Request.RawUrl permite el acceso a esta información pero en su lugar en el archivo Global.asax.cs. Esto se hace en el evento Application_BeginRequest. Pero el truco (y comente si alguien conoce una forma más elegante de hacer esto) pero inyectamos la Url que se está utilizando en la ruta de ruta restante para que pueda recogerse en el método MapRoute. Así que " http://subdomain.domain.net/url " el sitio aparecerá como " http://subdomain.domain.net/subdomain.domain .net / url para que pueda recogerse en la parte {sitio} del comando MapRoute. Esto no se mostraría al usuario, pero luego nos permite tomar decisiones dentro de la aplicación en función de la URL recibida. ¿Suena esto cuerdo? Los comentarios son bienvenidos si esto parece una forma loca de hacerlo para absorber la URL raíz.

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