Redirect da Global.asax in Asp.NET e C#

Mattepuffo's logo
Redirect da Global.asax in Asp.NET e C#

Redirect da Global.asax in Asp.NET e C#

Per effettuare dei redirect corretti e completi in Asp.NET, non basta agire sul file web.config; ma si deve ancora mettere alla configurazione di IIS.

Oppure si può usare il Global.asax; che è quello che ho fato suguendo il suggerimento del Forum HTMLit.

Io dovevo semplicemente verificare l'esistenza di determinate pagine; quindi sono andato a prendermi il file richiesto, e controllato l'esistenza.

Io ho usato C#.

Il Global.asax lo potete aggiungere da Visual Studio; quello di default sarà così:

<%@ Application Language="C#" %>

<script RunAt="server">
    void Application_Start(object sender, EventArgs e)
    {
    }

    void Application_End(object sender, EventArgs e)
    {
    }

    void Application_Error(object sender, EventArgs e)
    {
    }

    void Session_Start(object sender, EventArgs e)
    {
    }

    void Session_End(object sender, EventArgs e)
    {
    }
</script>

Il mio modificato è così:

<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Web" %>

<script RunAt="server">
    internal protected void Application_BeginRequest(object sender, EventArgs e)
    {
        string path = HttpContext.Current.Request.Url.AbsolutePath;
        string absPath = HttpContext.Current
            .Server.MapPath("~/" + path.Replace("/", "").ToLower());
        if (!File.Exists(absPath))
        {
            Response.Redirect("~/Default.aspx");
        }
    }

    void Application_Start(object sender, EventArgs e)
    {
    }

    void Application_End(object sender, EventArgs e)
    {
    }

    void Application_Error(object sender, EventArgs e)
    {
    }

    void Session_Start(object sender, EventArgs e)
    {
    }

    void Session_End(object sender, EventArgs e)
    {
    }
</script>

In pratica ho aggiunto dei namespace, e un metodo apposito: Application_BeginRequest.

Enjoy!


Condividi

Commentami!