La prossima versione di ASP.NET MVC 3 introdurrà nuovi tipi di ActionResult non presenti nella release 2 del framework, per andare incontro incontro ad ulteriori esigenze legate allo sviluppo web. Tra questi spicca la classe HttpRedirectResult, dotata della proprietà booleana "Permanent", che consentirà di specificare la natura del redirect.
In particolare, valorizzandola a true si ottiene un redirect permanente, corrispondente al codice HTTP 301 (Moved Permanently), particolarmente utile per notificare ai motori di ricerca lo spostamento definitivo di una risorsa, in modo che questa mantenga il page rank acquisito in precedenza.
La stessa funzionalità è comunque replicabile anche in ASP.NET MVC 2 utilizzando un custom action result, ossia una classe che erediti da ActionResult ed effettui l'override del metodo ExecuteResult, responsabile della gestione del comportamento dell'action result.
public class PermanetRedirectResult : ActionResult { private string _redirectURL; // Costruttore public PermanetRedirectResult(string redirectURL) { _redirectURL = redirectURL; } public override void ExecuteResult(ControllerContext context) { // Pulisce la response HttpContext.Current.Response.Clear(); // Imposta lo status code e l'indirizzo di redirect context.HttpContext.Response.StatusCode = 301; context.HttpContext.Response.RedirectLocation = _redirectURL; } }
Il codice di stato HTTP 301 è accompagnato da un URL a cui far puntare il redirect, che valorizziamo nel costruttore e richiamiamo nella costruzione della risposta all'interno del metodo ExecuteResult. Chi usa ASP.NET MVC 2 all'interno di ASP.NET 4.0, eventualmente può anche implementare questo metodo tramite la nuova funzionalità HttpResponse.RedirectPermanent.
A questo punto è sufficiente utilizzarlo secondo le proprie necessità negli action methods coinvolti dal redirect.
public ActionResult Esempio() { // ... return new PermanetRedirectResult("https://www.aspitalia.com"); }
Così facendo la richiesta pervenuta all'action method "Esempio" risponderà con il codice HTTP 301, effettuando il redirect al'url che abbiamo definito (https://www.aspitalia.com).

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire la query string nell'output cache di ASP.NET Core
Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
Sfruttare l'output cache di ASP.NET Core 7 con i controller
Sfruttare la local cache del browser tramite gli ETag in ASP.NET Core
Definire le impostazioni di cache a livello di controller in ASP.NET Core 7
Short-circuiting della Pipeline in ASP.NET Core
Cache policy su route groups di Minimal API in ASP.NET Core 7
I più letti di oggi
- Usare un KeyedService di default in ASP.NET Core 8
- .NET Conference Italia 2023 - Milano e Online
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Registrare servizi multipli tramite chiavi in ASP.NET Core 8
- Creare dei grafici con OWC
- Ottimizzare le prestazioni di ASP.NET Core con la Cache distribuita su SQL Server