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,

Était-ce utile?

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 )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top