ASP.NET MVC unter IIS 6 - Platzhalterzuordnung - die eingehende Anforderung stimmt mit keiner Route überein

8

Ich habe versucht, meine Beta 1 MVC-App auf IIS 6 einzurichten und kann sie nicht korrekt ausführen. Ich habe der .net-isapi-DLL ein Wildcard-Mapping hinzugefügt, wie es in anderen Blogposts vorgeschlagen wird, bekomme aber den folgenden Fehler, wenn ich auf das Stammverzeichnis der Website zugreife:

%Vor%

Ich verwende die Default.aspx-Seite, die in der MVC-Vorlagenanwendung bereitgestellt wird, die den Zugriff auf das Stammverzeichnis der Website ordnungsgemäß umschreibt.

%Vor%

Wenn ich versuche, auf eine Route in der Anwendung zuzugreifen, z. B. / Project, erhalte ich die Standard-Fehlerseite von IIS 404, nicht die .net-Fehlerseite.

Ich habe versucht, die folgende Zeile zum Abschnitt httpHandlers Web.config hinzuzufügen:

%Vor%

Dies gab mir einen anderen Fehler - die .net 404 Fehlerseite.

Ich habe meinem Global.asax folgendes hinzugefügt, was nichts bewirkt hat:

%Vor%

Ich verwende die folgende Routenkonfiguration (verwendet das restliche Routing, das vom MvcContrib-Projekt bereitgestellt wird):

%Vor%

Irgendwelche Vorschläge würden sofort kommen, da ich alle Möglichkeiten für die Zeit, die ich gerade habe, ausgeschöpft habe.

Vielen Dank.

    
Tim Peel 09.11.2008, 13:35
quelle

3 Antworten

8

OK, es funktioniert.

Das Problem bestand darin, dass ich die Msbuild-Automatisierung verwendete, um die Dateien zu packen, die ich bereitstellen musste, und mir fehlte global.asax.

Es sieht also so aus, als wenn global.asax nicht auf der Site bereitgestellt wird, dann wird keine der Routen angeschlossen. Dies bedeutet, dass das korrekte Aufrufen des Website-Stamms zu dem Fehler "Die eingehende Anfrage entspricht keiner Route" führt. Alle anderen Anfragen werden nicht mehr an die Controller-Klassen weitergeleitet, daher wird 404 angezeigt.

HTH.

    
Oli 12.11.2008, 12:47
quelle
18

Folgendes habe ich getan, um plattformunabhängige URLs mit IIS 6 und ASP.NET MVC Beta 1 zu verwenden.

  • Erstellen Sie eine standardmäßige ASP.NET MVC Beta projizieren und kompilieren.
  • Erstellen Sie eine neue IIS-Website, auf die verwiesen wird das Anwendungsverzeichnis.
  • In den IIS-Eigenschaften für die klicken Sie auf das HomeDirectory Registerkarte.
  • Klicken Sie auf die Schaltfläche "Konfiguration ...". Klicken Sie auf der Registerkarte "Zuordnungen" auf "Einfügen ..."
  • Neben der "Wildcard-Anwendung maps "label Geben Sie in das Textfeld ein "c: \ Windows \ Microsoft.net \ Framework \ v2.0.50727 \ aspnet_isapi.dll"
  • Deaktivieren Sie das Kontrollkästchen "Überprüfen" diese Datei existiert "Klicken Sie auf OK
  • Navigieren nach / home Es hat funktioniert!

Sie sollten web.config überhaupt nicht ändern müssen. Sie müssen alle Anforderungen nur an die ASP.NET Isapi-DLL an IIS abbilden, sonst wird ASP.NET diese Anforderungen nie erhalten.

    
Haacked 10.11.2008 22:21
quelle
1

Leider benötigt IIS 6 eine Dateierweiterung, um die Anfrage dem rechten Handler zuzuordnen, was bedeutet, dass Sie das .mvc-Suffix für Ihre Controller-Namen verwenden müssen, wie zB / {controller} .mvc / {action}

%Vor%

Es gibt jedoch Möglichkeiten, die davon abhängen, wie viel Kontrolle Sie auf dem IIS 6-Server haben. Weitere Informationen finden Sie auf den folgenden Seiten.

TheCodeJunkie 09.11.2008 13:46
quelle

Tags und Links