Gibt IIS 404 für ASP.NET MVC3-Datei (.cshtml)
Habe ich standard ASP.NET 4 Anwendung. In dieser Anwendung gibt es auch einige razor (z.B. test.cshtml
) - Dateien. ASP.NET die Anwendung funktioniert jedoch wenn ich den Punkt browser /test
Datei (ohne extension). IIS (static file handler) gibt 404 zurück.
Die gleiche Anwendung und auch die standalone - .cshtml
Dateien, die auf lokalen Maschine (mit IIS7.5/Win7) und einem server (IIS7.5/Win2008R2), doch es funktioniert nicht, der server mit IIS7.0/Win2008.
MVC3 installiert ist auf beiden Maschinen, app pools auf beiden Maschinen .NET 4.0 integriert.
Wie die .cshtml
Handler funktioniert? Wenn der IIS entscheidet sich für static file handler und wenn die .cshtml
handler? Was sollte ich sonst noch überprüfen?
EDIT:
Klärung - ich bin nicht wirklich mit den ganzen MVC-framework, es ist nur, wie die plain-old .ASPX oder PHP-Datei. Keine Controller, keine Routen, keine 'Aussicht'. Ich benutze es für ein einfaches Skript, zusätzlich zu den alten ASP.NET -Anwendung.
Ich denke, es ist nicht ein Programmier-Problem, da es funktioniert auf dem lokalen computer, sondern eher ein Konfigurations-Problem - der IIS auf dem Win2008 server möglicherweise nicht ordnungsgemäß konfiguriert werden.
EDIT2:
(Maschinen mit IIS7.5 arbeiten, nur Maschine mit IIS7.0 funktioniert nicht. Aber ich bin mir nicht sicher, ob es ein problem des IIS-version.)
EDIT3:
Auf meinem lokalen Rechner, wo es funktioniert, habe ich nicht das routing. TheCodeKing und Keith schlug vor, dass ich brauchen, um eine routing-irgendwo. Vielleicht ja, aber es ist nicht in meiner Anwendung. Es kann festgelegt werden, standardmäßig irgendwo in der IIS-Konfiguration.
Haben Sie irgendwelche Hinweise, wo sich dieser 'impliziten' routing gefunden werden konnte?
EDIT4:
Hinweis: Auf allen Computern, es ist HttpForbiddenHandler
für *.cshtml
, da Sie nicht herunterladen können die cshtml-Datei. Und es gibt auch die TransferRequestHandler
für *.
. (Beide sind aktiviert.)
EDIT5:
Habe ich festgestellt, dass auf dem Server, wo es funktioniert, muss ich irgendwelche .cshtml
- Datei im web-root. Wenn ich entfernen Sie die .cshtml
aus dem web-root, und versuchen Sie, rufen Sie aus einem Unterverzeichnis funktioniert es nicht.
EDIT6:
Ich habe versucht, auf zwei weitere Maschinen: eine mit IIS 7.5
und ein weiteres mit IIS 7.0
. Auf IIS 7.5
es funktioniert (einfache Installation keine Konfiguration), aber auf IIS 7.0
es funktioniert nicht.
, Wie es auf den IIS 7.0?
- Ich bin mir nicht sicher, ob ich verstehe. Unter MVC, rufen Sie eine controller-Methode durch die route-engine, die mit einigen URL in der form http://mydomain/mycontroller/mycontrollermethod oder somesuch. Die controller-Methode ruft den entsprechenden cshtml-Ansicht. Warum würden Sie wollen, öffnen Sie die Ansicht direkt?
- Siehe auch stackoverflow.com/questions/4942634/...
- Da es sich um keine 'view' für ein typisches MVC-Anwendung, sondern ein einfaches Skript.
- In IIS 7 für Ihre Website, haben Sie überprüft, die
Handler Mappings
für *.cshtml? - Siehe meine Antwort in EDIT4.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Yay! Nach mehreren Tagen kämpfen, ich habe es gefunden! :))
Eins Weg, um es Arbeit auf IIS 7.0 zu ermöglichen
runAllManagedModulesForAllRequests
:(Obwohl, auf IIS 7.5 klappt es auch mit dem default-Wert
runAllManagedModulesForAllRequests="false"
.)Frag mich nicht warum:) Vielleicht kann mir jemand erklären.
Nicht sicher, ob dies Ihr problem ist, aber es klingt wie ASP.NET Web-Seiten nicht laufen (MVC-3 hängen von Web-Seiten für Rasierer und andere Dinge). Manchmal können die Dinge installiert, die Bestellungen Durcheinander, einige Konfiguration ASP.NET und IIS, die wiederum könnte es doch so machen Web-Seiten nicht ausgeführt wird und keine cshtml-Datei wird ausgeführt.
Versuchen, aspnet_regiis /i reinigen Sie alle auf.
aspnet_regiss /i
(für .NET 4), aber es hilft nicht (da es gerade erst registriert ASP.NET habe ich auch neu installiert ASP.NET MVC3.C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i
Gibt es ein hotfix für den IIS7.0 verfügbar unter: http://support.microsoft.com/kb/980368
Installierte ich es heute auf windows 2008 SP2 (das erfordert ein Betriebssystem neu starten).
Das Verhalten in IIS 7.0 ist jetzt ähnlich als IIS 7.5
Es behoben das problem auf meiner Seite, /ohne zu zwingen:
Dies ist ein besserer Ansatz als der Betrieb alle Bausteine für jede Anfrage (auch auf css/images/...) und das würde zu unnötigen überlastung.
Sind Sie sicher, dass IIS die Berechtigungen für den Zugriff auf die Datei unter dem /Verzeichnis test?
Dies könnte Ursache einige dumme Fragen, wie ich gefunden habe.
Wenn dies ein asp.net 4.0-web-Anwendung, müssen Sie manuell Routen einrichten, erstellen Sie den entsprechenden controller(s), und stellen Sie sicher, dass Ihre Ansichten (.cshtml-Dateien) existieren tatsächlich in der /Views/ControllerName Ordner.
Ich würde auch empfehlen die Einrichtung von Ihrem Projekt zu verwenden, IISExpress in Ihre Entwicklungsumgebung, um mehr eng mit Ihrem web-server. Es ist eine große Hilfe beim Debuggen, diese Art von Fragen.
Als Sie nicht mit MVC, würden Sie benötigen, um routing-oder umschreiben, mit IIS rewrite-Modul zu erwarten
/test
beheben zu/test.cshtml
. Sie bekommen nicht dieses Verhalten, ohne es.z.B. so etwas wie dies in Ihrer Anwendung starten.
.cshtml
? Vielleicht könnten Sie zeigen einige code? Welche Versionen von IIS funktionieren, welche nicht? Sind Sie alle gleich?test.cshtml
und Anfrage/test
bekomme ich einen 404. Wenn ich versuchen /testen.cshtml ich habe natürlich diese Art von Datei kann nicht bedient werden. Wir müssen wissen, wie Sie sich eingerichtet haben-routing für die.cshtml
. Dies ist der Schlüssel zu Ihrem Problem. Sie erwähnt ein einfaches script?test.cshtml
- Datei. Inhalte könnten nur "Die Zeit wird @DateTime.Jetzt.". Siehe EDIT3.cshtml arbeiten können, wenn Sie ein web.conf.
Können Sie denken, es ist ein html-aber mit razor-syntax.