¿Es imposible enrutar la URL existente usando el enrutamiento Asp.net?
-
06-07-2019 - |
Pregunta
Desde mi último pregunta , se ha descubierto que el enrutamiento Asp.net no puede enrutar con la URL existente para obtener más información lea esto .
¿Cómo redirigir la url existente a otra url usando el enrutamiento Asp.net?
Sugerencia!
Creo que este comportamiento como acceso denegado que siempre redirige a la página de inicio de sesión predeterminada.
Gracias ,
Solución 2
Encontré la solución. Es muy fácil usando HttpModule. Mire mi siguiente código de ejemplo.
En global web.config
<configuration>
<system.web>
<httpModules>
<add name="RedirectModule" type="MySolution.RedirectModule, MySolution" />
</httpModules>
</system.web>
<!-- The following code will be used by IIS 7+ -->
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="RedirectModule" />
<add name="RedirectModule" type="MySolution.RedirectModule MySolution" />
</modules>
</system.webServer>
</configuration>
En MySolution / RedirectModule.cs
using System;
using System.Web;
namespace MySolution
{
public class RedirectModule : IHttpModule
{
#region IHttpModule Members
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(HttpApplication_BeginRequest);
}
public void Dispose() {}
#endregion
void HttpApplication_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
if (*[logic for checking before redirect]*)
{
app.Response.Redirect(*[url]*);
}
}
}
}
Para obtener más información, consulte el código fuente del mapeo de url como UrlRewritingNet.UrlRewrite .
PS. IHttpModule es una interfaz muy poderosa. Se puede manejar con cada tipo de solicitud. Entonces, puede ayudarme a resolver completamente esta pregunta.
Otros consejos
Debe asegurarse de que la url -existente- esté 'encontrada' / 'coincidente' en la tabla de rutas, y la url a la que está redirigiendo no es ... (a menos que esté redirigiendo a una acción / ruta del controlador )