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,

È stato utile?

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 )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top