Leiten Sie alle Anfragen an ASP.NET MVC auf IIS6
-
03-07-2019 - |
Frage
Ich bin mit Blick auf wahrscheinlich etwas wirklich einfach hier, aber ich versuche alle schlechten URLs auf eine Aktion zu umleiten, die die URL auf Bedingungen basieren filtern und dann entweder 301 Umleitungen an einer geeigneten Seite oder gibt eine 404-Seite.
Zu diesem Zweck habe ich eine Strecke wie diese am Ende meiner Route-Tabelle:
routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" });
Und eine Aktion wie folgt:
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... */));
}
Das funktioniert perfekt vor Ort.
Wenn jedoch auf IIS6 eingesetzt, URLs, die .mvc nicht enthalten (z oldfile.php) nie an den ASP.NET-Prozess für das Routing gesendet.
Gibt es eine einfache Lösung / bin ich etwas mit Blick auf?
EDIT: Dies bezieht sich diese Frage jedoch unter IIS6 URLs ohne .mvc ist nicht für ASP.NET MVC Verarbeitung gesendet werden.
Lösung
Mehr als wahrscheinlich, wenn Sie auf den Server bereitgestellt wird ASP.Net nicht aufgerufen werden.
Ich würde Setup Wildcard-Mapping in IIS so Ihre Anfragen werden ASP.Net verwenden, um die Anfragen zu bedienen.
Öffnen Sie IIS-Manager mit der rechten Maustaste auf die App, wählen Sie Eigenschaften, dann auf die Registerkarte Basisverzeichnis, dann Konfiguration. Unter Wildcard Applikationskarten, klicken Sie auf Einfügen (nicht hinzufügen, die zum Verwechseln gerade oben ist), dann C eingeben: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll für „Executable“ und deaktivieren Stellen Sie sicher, dass Datei vorhanden ist.
Für weitere Informationen bitte die Quelle besuchen, die mich mit diesem Thema halfen bei: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/