Est-il impossible de router les URL existantes en utilisant Asp.net Routing?
-
06-07-2019 - |
Question
de mon dernier question , il a été constaté que Asp.net Routing ne peut pas acheminer d'URL existante pour plus d'informations lisez ceci .
Comment rediriger l'URL existante vers une autre URL en utilisant Asp.net Routing?
Indice!
Je pense que ce comportement ressemble à un accès refusé, qui redirige toujours vers la page de connexion par défaut.
Merci,
La solution 2
J'ai trouvé une solution. C'est très facile en utilisant HttpModule. Veuillez regarder mon exemple de code suivant.
Dans le fichier 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>
Dans 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]*);
}
}
}
}
Pour plus d'informations, consultez le code source de mappage des URL, tel que UrlRewritingNet.UrlRewrite .
PS. IHttpModule est une interface très puissante. Il peut gérer avec chaque type de demande. Cela peut donc m'aider à résoudre complètement cette question.
Autres conseils
Vous devez vous assurer que l'URL -existante- est 'trouvée' / 'correspondante' dans la table de routage et que l'URL vers laquelle vous redirigez ne soit pas ... (sauf si vous redirigez vers une action / un contrôleur de contrôleur )