2010-08-30 4 views
6

Ich versuche, umgeschriebene URLs in meinem Projekt zu aktivieren. es ist sehr gut in diesem Post beschrieben: urlrewriting by scottgu Es funktioniert sehr gut, wenn ich es auf localhost ausführen, aber sobald ich es auf meinem Host (. NET 3.5) hochladen, funktioniert es nicht! Ich werde immer auf eine 404-Seite weitergeleitet!Url Umschreiben mit asp.net. Wird eine Konfiguration benötigt?

Ist eine Konfiguration erforderlich, um dies zu ermöglichen? wie ScottGu sagt nein, aber ich weiß nicht herausfinden, warum es nicht funktioniert ...

dank

// UPDATE 2.09.2010

Gibt es eigentlich eine Möglichkeit, Routing zu aktivieren oder Umschreiben ohne Haben Sie iis7 oder können Sie ein Modul wie ISAPI Rewrite auf dem Server installieren? Sieht so aus, als ob ich einen schlechten asp.net-Host bekommen habe ...

+0

Haben Sie versucht, zu sehen, wie Ihre URL in Application_BeginRequest umgeschrieben wird? – mamoo

+1

Was ist die Version Ihres IIS? – Adeel

+0

Wie kann ich das sehen? im mit dieser Methode: Hohlraum Application_BeginRequest (object sender, EventArgs e) { Zeichenfolge fullOrigionalpath = Request.Url.ToString(); if (fullOrionalpath.Contains ("/ Products/Books.aspx")) { Context.RewritePath ("/ Products.aspx? Category = Bücher"); } .... } – k0ni

Antwort

4

In Ihrer lokalen Host-Umgebung Sie wahrscheinlich laufen die Website auf Ihren ASP.NET Development Server. Dieser Server ist so eingerichtet, dass alle Anforderungen (*. *) Erfasst und über die ASP.NET-Pipeline ausgeführt werden.

II6 auf der anderen Seite ist konfiguriert, nur einige Anforderungen (dh * .aspx, * .asmx, * .ashx) über die ASP.NET-Pipeline zu senden. Also, wenn Sie versuchen, eine Anfrage für eine URL wie "/ my/fine/url" abzufangen, die niemals an den ASP.NET-Handler übergeben und somit nicht neu geschrieben wird.

Sie diese Konfiguration in der Anwendungskonfiguration für die Website ändern können:

  1. Öffnen Sie IIS-Manager und der rechten Maustaste auf die Website, wählen Sie Eigenschaften
  2. Sie auf der Registerkarte "Home Directory", klicken Sie auf „Konfiguration ..." Taste.
  3. Klicken Sie auf "Einfügen ...", um eine Wildcard-Applikationskarte einzufügen.
  4. In "Executable:" Pfad zu aspnet_isapi.dll, in meinem Fall C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll einfügen (Hinweis: Dieser Pfad kann auf Ihrem Server abweichen).
  5. Vergessen Sie nicht, die Option "Überprüfen, ob die Datei vorhanden ist" zu deaktivieren.
  6. Klicken Sie auf OK!

Und so! Alle Ihre Anfragen sollten jetzt an den ASP.NET-Handler gerichtet werden und daher unabhängig von der Erweiterung in Ihren URL-Rewriter eingefangen werden.

Aber ich muss zugeben, dass ich ein wenig unsicher bin, wie dies die Leistung auf Ihrer Website beeinflussen wird, alle Anfragen für statische Dateien, CSS, Bilder usw. durch den ASP.NET-Handler. Vielleicht hat jemand anderes da draußen etwas zu sagen.

/Dennis :-)

+0

vielen Dank! Genie! – k0ni

+0

aber ich würde interessiert sein, wie dies die Leistung und andere Dinge beeinflusst ... ist das der richtige Weg, es zu tun? thx – k0ni

+0

Das ist die Möglichkeit, ASP.NET MVC auf IIS6 auszuführen, aber alle Anforderungen sogar für statischen Inhalt werden durch ASP.NET-Pipeline und Leistung beeinträchtigt. Sie können mscd.codeplex.com verwenden, um dies zu vermeiden. – dariol

1

Es gibt zwei Möglichkeiten, um die erweiterungs Routen in IIS6 zu bekommen:

a) ISAPI Rewrite oder andere ISAPI url rewriter
b) eine Wildcard-Mapping können Sie aspnet_isapi.dll

Siehe this blog post für detaillierte Anweisungen.