Question

Je néglige probablement quelque chose de très simple ici, mais j'essaie de rediriger toutes les URL incorrectes vers une action qui filtre l'URL en fonction des conditions, puis 301 redirige vers une page appropriée ou génère une page 404.

À cette fin, j'ai un itinéraire comme celui-ci à la fin de mon tableau 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 localement.

Toutefois, lorsqu'ils sont déployés sur IIS6, les URL n'incluant 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é à cette question , mais sous IIS6. Les URL sans .mvc ne sont pas envoyées pour le traitement ASP.NET MVC.

Était-ce utile?

La solution

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

Je mettrais en place un mappage générique dans IIS afin que vos demandes utilisent ASP.Net pour répondre à ces demandes.

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

Pour plus d'informations, veuillez consulter la source qui m'a aidé à résoudre ce problème à l'adresse http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top