J'ai un site Web asp.net hérité Je migre vers asp.net mvc.asp.net mvc mappage d'itinéraires anciens
Je souhaite rediriger de manière permanente les URL existantes vers les contrôleurs mvc asp.net. J'ai des contrôleurs avec des vues pour le nouvel emplacement pour ces liens, et je voudrais faire une redirection 301 sur les pages existantes vers les nouvelles vues.
J'ai deux différents types de urls:
type 2 urls sont le résultat d'un module url rewriter existant d'avant la manipulation de la route asp.net mvc.
je code de redirection existant:
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", url);
Response.End();
Où dois-je faire la redirection?
Je vois deux options:
Application_BeginRequest - utiliser regex pour analyser l'url
Ce que j'aime ce:
- Je vérifie déjà urls majuscules pour rediriger vers urls en minuscules ici
- J'ai la chance de travailler directement avec la réponse sans avoir à retourner un n ActionResult
Ce que je ne l'aime pas à ce sujet:
- type d'URL # 2 du haut doit être mis en correspondance dans les nouveaux contrôleurs/vues, ce qui signifie que je dois faire une base de données travailler pour obtenir le chemin de l'URL
Actions contrôleur - utiliser les routes & contrôleurs pour faire la redirection
Ce que j'aime ce:
- je peux proprement faire le travail de base de données dont j'ai besoin
Ce que je ne l'aime pas à ce sujet:
- Le le contrôleur doit retourner une vue, et je suis en train de manipuler directement le flux de réponse pour créer le 301.
Toutes les suggestions seraient grandes, merci.
Je me suis aussi penché vers les contrôleurs. Ne pas appeler la couche de service dans global.asax est ce qui m'a vendu. La partie étrange est de jouer directement avec la réponse et de retourner une vue nulle. – blu
Avez-vous cherché à retourner une RedirectToAction ou quelque chose comme ça? –
Je ne veux pas vraiment rediriger vers une action, n'est-ce pas? Je veux envoyer la réponse http pour 301 et laisser le navigateur gérer la redirection. – blu