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
Load test di ASP.NET Core con k6
Implementare il throttling in ASP.NET Core
Short-circuiting della Pipeline in ASP.NET Core
Routing statico e PreRendering in una Blazor Web App
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Usare un KeyedService di default in ASP.NET Core 8
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
I più letti di oggi
- Migliora la resilienza delle applicazioni con .NET e Azure Container Apps
- Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
- Enterprise Preview di Windows 10: la nuova versione di Windows, dal telefono al desktop
- #Windows8 supporterà anche i chipset ARM http://aspitalia.com/build-win8 #BldWin
- Utilizzare CSS per dimensionare un div in base alla viewport o in base al testo
- Minimal API in ASP.NET Core 8