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!
asp.net c# global.asax application_beginrequest
Commentami!