Frage

Was ist der beste Weg, eine ASP.NET MVC-Anwendung zu bekommen Hosting auf IIS 5 (6 oder 7) zu arbeiten. Als ich versuchte, meine ASP.NET MVC-Anwendung zu veröffentlichen, alles, was ich zu bekommen schien 404 Fehler. Ich habe ein bisschen von googleing getan und habe ein paar Lösungen gefunden, aber weder scheint Super elegant, und ich mache mir Sorgen, wenn sie unbrauchbar sein werden, sobald ich gekommen, um eine Shared-Hosting-Umgebung für die Anwendung zu nutzen.

Lösung 1

  
      
  1. Rechtsklick auf Ihre Anwendung virtuelles Verzeichnis auf inetmgr.exe.
  2.   
  3. Einstellungen-> Virtual Directory Tab-> Konfiguration.
  4.   
  5. Fügen Sie eine neue Mapping-Erweiterung. Die Verlängerung sollte. *, Welche seine   zum Executable abgebildet   C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll,   oder die entsprechende Stelle auf dem   Computer (Sie können dies einfach kopieren   von der Zuordnung für ASPX-Dateien). Auf   die Zuordnung deaktivieren „überprüfen Sie die Datei   existiert“.
  6.   
  7. 3 X OK und Sie sind gut zu gehen.
  8.   
  9. Wenn Sie möchten, können Sie diese Einstellung auf alle Ihre Web-Seiten gelten. Im   Schritt 1, klicken Sie auf „Default Web Site“   Knoten statt Ihrer eigenen virtuellen   Verzeichnis, und in Schritt gehen 2 bis die   "Home Directory" Reiter. Der Rest ist die   gleich.
  10.   

Es scheint ein bisschen hacky zu routen alles durch ASP.NET.

Lösungen 2

Bearbeiten Sie die MVC Routing .mvc in der URL enthalten und dann die Schritte in Lösung 1 um diese Erweiterung basiert folgen. Edit: Das Originalbild Link verloren war, aber hier ist es aus dem Google-Cache:

alt text

War es hilfreich?

Lösung

Antwort ist hier

  

Wenn * .mvc Erweiterung ist nicht registriert   zum Hosting, wird es 404 geben   Ausnahme. Die Arbeitsweise Hosting   MVC-Anwendungen in diesem Fall ist zu ändern   Global.asax caluse Routing in der   folgende Art und Weise.

     

routes.Add (neu   Route ( "{Controller} .mvc.aspx / {Aktion}",   neue MvcRouteHandler ()) {       Defaults = new Routevaluedictionary (neu {Controller   = "YourController"})});

     

Auf diese Weise alle Ihre Controller   Antrag wird bis in * .mvc.aspx enden,   die von Ihrem Hosting anerkannt.   Und wie der MVC-DLLs kopiert in   Ihre lokales ist, keine besonderen setttings   werden müssen, um es getan.

Andere Tipps

Ich denke oder so werden Sie Lösung zu tun haben 1 .

Betrachten Sie die HTTP-Request-Pipeline.

  1. Eine Anforderung kommt in IIS.
  2. IIS prüft Port / Host-Header, um zu sehen, ob es eine Website einrichten erfassen Anforderungen für diesen Host-Header / Port hat.
  3. IIS untersucht die Dateierweiterung der Anforderung (.php, .asp, aspx) und übergibt sie an eine ISAPI ab, der diese Art der Anforderung verarbeiten kann.

Erst an diesem Punkt tut ASP.NET (oder einer PHP-Laufzeit) Tritt in. Wenn IIS dann diese Zuordnung hat does't es wird nie die Anforderung an die ASP.NET-Laufzeit der Hand von und die Anforderung wird nie Code erreichen. Deshalb sollten Sie, dass glob (*) Abbildung auf die ASP.NET ISAPI benötigen.

ASP.NET MVC-Framework URLs oft ohne Dateierweiterung enden überhaupt. Wenn Sie diese Anfragen von ASP.NET erhalten behandelt werden sollen (oder eine andere Laufzeit) müssen Sie alle Anfragen Karte unabhängig von der Dateierweiterung auf diese ISAPI (dh. Aspnet_isapi.dll).

Dies wird häufig auch für Httphandlers getan, dass Medien wie JPG, GIF dienen müssen weg. Für die Prozedur muss getroffen werden, um es auch zu Ihrem Code zugeordnet werden, obwohl .jpg nicht eine „normale“ ASP.NET-Dateierweiterung ist.

HTH,
Tyler

Ausführen: C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll -i

Dies wird zurückgesetzt IIS-Registrierungseinstellungen für aspnet Benutzer.

Erstellen Sie das virtuelle Verzeichnis: 1. Rechtsklick auf das Verzeichnis, das Sie konvertieren möchten

  • wählen Sie Eigenschaften
    1. unter Verzeichnis, wählen Sie Erstellen.
    2. unter Konfiguration, wählen Sie Hinzufügen.
    3. für Executable einfügen:

C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll

für Erweiterung einfügen:. *

  • deaktivieren Sie „Überprüfen Sie, ob Datei existiert“

  • unter Dokumente Einstiegspunkt Datei hinzufügen, das heißt: Default.htm, index.htm, Global.asax

  • unter Verzeichniseinstellungen

    1. Wählen Sie Bearbeiten ...
    2. Wählen Sie den anonymen Zugriff
    3. deaktivieren IIS zulassen Passwort steuern
    4. Deaktivieren Sie die Option Standardauthentifizierung
    5. deaktivieren Sie integrierte Windows-Authentifizierung
    6. unter ASP.NET, stellen Sie sicher, Version = v4.0.30319

NEHMEN von Benutzername dh: IUSR_AVSJ82S

Legen Sie Freigabe Erlaubnis von physischen Verzeichnis:

  • In Windows Explorer, gehen Sie zu dem physischen Verzeichnis, das auf ein virtuelles Verzeichnis umgewandelt wurde. Rechtsklick auf den Verzeichnisnamen
  • wählen Sie Eigenschaften
  • unter Registerkarte Sicherheit, wählen Sie Hinzufügen
  • Geben Sie den IIS-Benutzernamen dh:. IUSR_AVSJ82S klicken Name überprüfen
  • Klicken Sie auf OK
  • setzen Sie die Berechtigungen Lesen und Schreiben.

Zur Info: Auf Server 2003 (Entwicklung einer App, die mit dem RPS verbinden hatte), es hat nicht‘mir erlauben die Erweiterung hinzufügen *, benutzte ich die alternative Lösung, um die Strecke Klausel ändern, und dass. gearbeitet.

Haben Sie versucht ASPX- bis zum Ende des Controller-Namen hinzufügen?

Es funktionierte für Stack Overflow Frage Wo kann ich ASP bekommen. NET MVC Hosting? .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top