Sto progettando un nuovo sito dinamico da un sito statico. Ho ordinato il percorso, ma ho una domanda sul mio metodo di azione.Codice controller corretto per 301 Redirect
Di seguito è riportato il codice, ma quando si esegue il test e si guardano le intestazioni che Firebug segnala, se prendo la Response.End è un reindirizzamento 302 presumo perché imposto il 301 ma poi chiamo un'altra azione che lo rende un 302 , ma se inserisco la Response.End ottengo un 301.
Sto supponendo che aggiungendo Response.RedirectLocation stia facendo effettivamente il reindirizzamento 301 così faccio quindi a cambiare il mio valore di ritorno su EmptyResult o null anche se quella riga di codice non verrà mai eseguito solo così l'applicazione compila?
public ActionResult MoveOld(string id)
{
string pagename = String.Empty;
if(id == "2")
{
pagename = WebPage.SingleOrDefault(x => x.ID == 5).URL;
}
Response.StatusCode = 301;
Response.StatusDescription = "301 Moved Permanently";
Response.RedirectLocation = pagename;
Response.End();
return RedirectToAction("Details", new { pageName = pagename });
}
Come menzionato nei commenti alla mia risposta, in questo caso stai facendo due ActionResults. Il reindirizzamento 301 è di per sé un ActionResult, quindi lo segui con un altro ** DOPO ** la risposta è stata inviata. –