2016-06-10 9 views
0

Ich habe eine Rewrite-Regel, die besagt.IIS URL überschreiben ignoriert .chtml (Razor) Dateien

site.one/content/templates/whatever.cshtml -> site.two/content/templates/whatever.cshtml

Das Problem tritt auf, wenn site.one Dateien zu holen .cshtml versuchen. Es gibt eine 404 zurück. Wenn ich jedoch die Erweiterung in .js oder .html ändern, funktioniert die Regel.

Wenn ich die site.two Link die Anfrage behandelt, ist es gut, das ist ohne irgendwelche Schreibmaschinen natürlich. site.one kann auch .cshtml-Dateien in einem eigenen Verzeichnis verarbeiten.

Iam mit dem IIS-10, UrlRewrite Modul 2 und Routing von Anwendungsanforderungen 3.

UPDATE

So ist die .cshtml in diesem Fall sind Template-Dateien, die mit Asynchron text.js geholt wird, und wird dann mit dem Lenker als letzten Schritt vor dem Rendern kompiliert, aber einige von ihnen müssen wegen der Übersetzungen von der Rasierklingenmaschine bearbeitet werden. Dies funktioniert, wenn nicht neu geschrieben wird.

Antwort

0

Razor-Dateien werden niemals vom MVC-Framework oder IIS bedient. Razor-Dateien werden von MVC verarbeitet, und das Ergebnis der Verarbeitung wird über eine Controller-Aktionsmethode an die Ausgabe gesendet. Der Server reagiert in diesem Fall korrekt mit einer 404-Antwort, da diese Dateien standardmäßig blockiert sind (Sie möchten niemals eine unverarbeitete .cshtml Datei mit Quellcode an den Benutzer senden).

Da diese Dateien von IIS blockiert werden, gibt es keine Möglichkeit, sie mithilfe des URL-Rewrite-Moduls umzuleiten (und das auch nicht).

Ich vermute, dass Sie wahrscheinlich Ihre MVC URLs umleiten möchten, die standardmäßig keine Erweiterung haben. Der Standardzugriff (der angepasst werden kann) ist /{controller}/{action}/. In der MVC-Vorlage ist der Standardweg zum Abrufen der Seite beispielsweise über die URL /Home/About/.

+0

Ok, ich verstehe. Ich habe meine Frage für mehr Kontext aktualisiert. – jensaronsson