2011-06-06 1 views
1

Quelle est la différence entre ces deux chemins?uri MVC3 avec ou sans "/" afficher une réponse différente

http://www.mydomain.com/testmvc3
http://www.mydomain.com/testmvc3/

Je mets le code dans HomeController.

// GET: /Home/ 
public ActionResult Index() 
{ 
    if (Request.IsAuthenticated) 
    { 
     return RedirectToAction("Index", "Member"); 
    } 
    else 
    { 
     return View(); 
    } 
} 

Mais seul le second lien fonctionne très bien, mais la première montre encore la page d'accueil (même si elle est authentifié) Comment les faire avoir la même réaction?

Répondre

0

Vous devez quitter le slash final d'un itinéraire normal, sinon cela indique que des paramètres url peuvent entrer dans l'action.

Pour appliquer cela, vous pouvez vérifier le filtre de nettoyage qui se trouve dans MvcCms. Source Code

private bool IsTrailingSlashDirty(ref string path) 
    { 
     //we only want a trailing slash on the homepage 
     if (path.EndsWith("/") && !path.Equals("/")) 
     { 
      path = path.TrimEnd(new char[] { '/', '/' }); 
      return true; 
     } 
     return false; 
    } 
+0

MvcCmsJon, merci pour votre rediffusion. Vous avez raison, avec votre code, l'URL sera évidemment claire. – Feng

1

Je trouve le problème, il a été causé par le cache de page. Pour éviter le problème, je modifie le code à:

[OutputCache(Duration = 30, VaryByCustom = "Request.IsAuthenticated")] 
public ActionResult Index() 
{ 
    if (Request.IsAuthenticated) 
    { 
     return RedirectToAction("Index", "Member"); 
    } 
    else 
    { 
     return View(); 
    } 
} 

Maintenant, cela fonctionne.

Questions connexes