È impossibile instradare l'URL esistente utilizzando Asp.net Routing?
-
06-07-2019 - |
Domanda
Dal mio ultimo domanda , sono stato scoperto che Asp.net Routing non può instradare con l'URL esistente per ulteriori informazioni leggi questo .
Come reindirizzare l'URL esistente a un altro url utilizzando il routing Asp.net?
Suggerimento
Penso che questo comportamento come l'accesso negato sia il reindirizzamento alla pagina di accesso predefinita.
Grazie,
Soluzione 2
Ho trovato la soluzione. È molto semplice usando HttpModule. Guarda il mio codice di esempio seguente.
Nel web.config globale
<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>
In 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]*);
}
}
}
}
Per ulteriori informazioni, consultare il codice sorgente di Url Mapping come UrlRewritingNet.UrlRewrite .
PS. IHttpModule è un'interfaccia molto potente. Può gestire con ogni tipo di richiesta. Quindi, può aiutarmi a risolvere completamente questa domanda.
Altri suggerimenti
Dovresti assicurarti che l'URL -existing sia 'trovato' / 'abbinato' nella tabella di instradamento e che l'URL a cui stai reindirizzando non sia .... (a meno che tu non stia reindirizzando a un'azione / rotta del controller )