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
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Load test di ASP.NET Core con k6
Implementare il throttling in ASP.NET Core
Routing statico e PreRendering in una Blazor Web App
Usare un KeyedService di default in ASP.NET Core 8
Short-circuiting della Pipeline in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
I più letti di oggi
- Utilizzare Docker Compose con Azure App Service
- Modernizzare le applicazioni WPF e Windows Forms con Blazor
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Steel Style CheckBox per Silverlight 4.0
- Utilizzare QuickGrid di Blazor con Entity Framework