2008-10-20 9 views
2

Je suis probablement en train de négliger quelque chose de vraiment simple ici mais j'essaye de rediriger toutes les mauvaises URL vers une action qui filtre l'URL en fonction des conditions, puis redirige 301 vers une page appropriée ou émet une page 404.Rediriger toutes les requêtes vers ASP.NET MVC sur IIS6

A cette fin, j'ai une route comme celui-ci à la fin de ma table d'itinéraire:

routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" }); 

Et une action comme celle-ci:

public ActionResult Error(string url) 
{ 
     if (/* Conditions are met... */) 
     { 
      Response.Status = "301 Moved Permanently"; 
      Response.AddHeader("Location", /* Destination URL */); 
      Response.End(); 
     } 

     Response.StatusCode = 404; 
     return View(/* 404 page... */)); 
} 

Cela fonctionne parfaitement sur place.

Cependant, lors du déploiement sur IIS6, les URL qui n'incluent pas .mvc (par exemple, oldfile.php) ne sont jamais envoyées au processus ASP.NET pour le routage.

Existe-t-il une solution simple/est-ce que je néglige quelque chose?

EDIT: Ceci est lié à this question, mais sous IIS6, les URL sans .mvc ne sont pas envoyées pour le traitement ASP.NET MVC.

Répondre

7

Plus que probablement lorsque vous déployé sur le serveur, ASP.Net n'est pas appelé.

Je voudrais configurer le mappage générique dans IIS afin que vos demandes utilisent ASP.Net pour répondre aux demandes.

Ouvrez le gestionnaire IIS, cliquez avec le bouton droit sur votre application, accédez à Propriétés, puis onglet Répertoire de base, puis cliquez sur Configuration. Sous Cartes d'application génériques, cliquez sur Insérer (pas Ajouter, ce qui est confusingly juste au-dessus), puis entrez C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll pour "Exécutable", et décochez Vérifier que ce fichier existe.

Pour plus d'informations s'il vous plaît visitez la source qui m'a aidé à cette question à: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

+0

La première fois que j'ai essayé cela, je ne l'ai pas remarqué que « Vérifiez que le fichier existe » nécessaire pour être décochée. – Pedro

Questions connexes