Coldfusion-Fehler und IIS7.5-Fehlerseiten

8

Damit ColdFusion seine Fehler anstatt nur eines Serverfehlers (Code 500) anzeigt, habe ich web.config gemäß einigen Ergebnissen auf dieser Site hinzugefügt.

Das Problem scheint gelöst, aber ...

Wenn ich ein nicht existierendes Verzeichnis im IIS besuche, gibt es eine "leere" Seite ohne Statuscode zurück. Wenn ich es von Passthrough auf Auto zurücksetze, nimmt der IIS die Fehlerseite erneut und es wurden keine ColdFusion-Fehler mehr angezeigt.

Jeder hat eine Lösung? Ich habe recherchiert und "vermutet", dass der JWildcardhandler vielleicht das Problem ist, aber ich konnte keine Lösung dafür finden.

Sehr geschätzt!

    
Benz 11.02.2011, 10:37
quelle

2 Antworten

22

Falls jemand sich fragt, ob die Web-Konfiguration dieser Person wahrscheinlich aussieht:

%Vor%

Wenn in der früheren Version von IIS ein benutzerdefiniertes Skript einen Fehlercode zurückgegeben hat, hat IIS es ignoriert und durchgelassen. Aber Sie könnten es auch einrichten, um den Fehlerstatus mit benutzerdefinierten Skripts zu behandeln.

Wenn auf meinem alten Server eine URL 404 war, wurde IIS zum Ausführen der Datei /404.cfm eingerichtet, die eine Fehlerseite und einen 404-Statuscode mit <cfheader> zurückgegeben hat.

Wenn jedoch jetzt das Skript einen 404-Statuscode zurückgibt, gibt das IIS einen Serverfehler zurück und gibt die Antwort nicht mit dem Statuscode 404 zurück.

Die einzige Möglichkeit, dies zu vermeiden, ist die Verwendung von existingResponse="PassThrough" und die Verwendung einer siteweiten Vorlage "Template Not Found" in CFAdmin.

Hier ist der interessante Teil. Ich habe index.cfm als Standard-Index und den only Standard-Index für meine Website eingerichtet.

Wenn ich zu /about/ gehe und /about/index.cfm exists, dann rendert es die Seite, als hätte ich sie nach /about/index.cfm gefragt. Und wenn ich zu /about/index.cfm und /about/index.cfm gehe nicht gehe, wird die siteweite 404-Vorlage ausgeführt.

Aber Wenn ich zu /about/ gehe und /about/ nicht als URL existiert, versucht nicht % zu laden co_de% und löst somit die siteweite 404-Vorlage aus. Stattdessen rendert es eine leere Seite!

Soweit ich das beurteilen kann, gibt es keine praktikable Lösung für dieses Problem . Es sieht so aus, als könnten nur Leute, die in .Net schreiben, dieses Problem lösen, da sie ein Flag in die Response setzen können, die sie generieren und die IIS "Issue the status code" sagen. Ich denke, dass Microsoft einfach nicht daran interessiert ist, alternative Webanwendungen zu unterstützen.

Grundsätzlich ist dies die Lösung: löscht /about/index.cfm und gibt die falschen Statuscodes zurück .

Alles andere wird zu schwer zu implementieren sein. Beachten Sie, dass dies nicht funktioniert, wenn Sie eine RESTful App oder API erstellen. In diesem Fall müssen Sie nur ein virtuelles Verzeichnis erstellen, für das Sie eine benutzerdefinierte Datei web.config zuweisen können, die existingResponse="PassThrough" verwendet. Aber wenn Sie in der Lage sein müssen, benutzerdefinierte Fehlerbehandlung und benutzerdefinierte 404-Behandlung zu ermöglichen, sind Sie effektiv geschraubt.

Die gute Nachricht ist, abgesehen von API und Ajax, dass sich jemand nur darum kümmern wird, was der Statuscode eigentlich ist, wenn er sich die Header trotzdem ansieht. In diesem Fall sehen sie, dass Sie laufen IIS und bedauern Sie nur.

    
Jordan Reiter 08.07.2011 00:30
quelle
4
___ tag123coldfusion ___ ColdFusion ist eine serverseitige Anwendungsplattform für schnelle Anwendungen, die die dynamische universelle CFML-Programmiersprache implementiert. Bitte CFML-Version, OS & Webserver in Fragen einbeziehen. ___ tag123iis75 ___ IIS (Internetinformationsdienste) Version 7.5 - ist eine Webserveranwendung und eine Reihe von Funktionserweiterungsmodulen, die von Microsoft zur Verwendung mit Microsoft Windows erstellt wurden. Veröffentlicht mit Windows Server 2008 R2 und Windows 7. ___ antwort12889032 ___

Wenn Sie den Passthrough beibehalten, können Sie die leere Seite mit einem Neuschreiben bearbeiten:

%Vor%

Das Neuschreiben bedeutet im Grunde, dass - wenn Datei und Verzeichnis nicht existieren - zu "404.cfm" umleiten. Fügen Sie auch einen 404 cfheader auf der Seite 404.cfm ein.

    
___ qstnhdr ___ Coldfusion-Fehler und IIS7.5-Fehlerseiten ___ answer6618714 ___

Falls jemand sich fragt, ob die Web-Konfiguration dieser Person wahrscheinlich aussieht:

%Vor%

Wenn in der früheren Version von IIS ein benutzerdefiniertes Skript einen Fehlercode zurückgegeben hat, hat IIS es ignoriert und durchgelassen. Aber Sie könnten es auch einrichten, um den Fehlerstatus mit benutzerdefinierten Skripts zu behandeln.

Wenn auf meinem alten Server eine URL 404 war, wurde IIS zum Ausführen der Datei /404.cfm eingerichtet, die eine Fehlerseite und einen 404-Statuscode mit %code% zurückgegeben hat.

Wenn jedoch jetzt das Skript einen 404-Statuscode zurückgibt, gibt das IIS einen Serverfehler zurück und gibt die Antwort nicht mit dem Statuscode 404 zurück.

Die einzige Möglichkeit, dies zu vermeiden, ist die Verwendung von %code% und die Verwendung einer siteweiten Vorlage "Template Not Found" in CFAdmin.

Hier ist der interessante Teil. Ich habe index.cfm als Standard-Index und den only Standard-Index für meine Website eingerichtet.

Wenn ich zu %code% gehe und %code% exists, dann rendert es die Seite, als hätte ich sie nach %code% gefragt. Und wenn ich zu %code% und %code% gehe nicht gehe, wird die siteweite 404-Vorlage ausgeführt.

Aber Wenn ich zu %code% gehe und %code% nicht als URL existiert, versucht nicht % zu laden co_de% und löst somit die siteweite 404-Vorlage aus. Stattdessen rendert es eine leere Seite!

Soweit ich das beurteilen kann, gibt es keine praktikable Lösung für dieses Problem . Es sieht so aus, als könnten nur Leute, die in .Net schreiben, dieses Problem lösen, da sie ein Flag in die Response setzen können, die sie generieren und die IIS "Issue the status code" sagen. Ich denke, dass Microsoft einfach nicht daran interessiert ist, alternative Webanwendungen zu unterstützen.

Grundsätzlich ist dies die Lösung: löscht %code% und gibt die falschen Statuscodes zurück .

Alles andere wird zu schwer zu implementieren sein. Beachten Sie, dass dies nicht funktioniert, wenn Sie eine RESTful App oder API erstellen. In diesem Fall müssen Sie nur ein virtuelles Verzeichnis erstellen, für das Sie eine benutzerdefinierte Datei web.config zuweisen können, die %code% verwendet. Aber wenn Sie in der Lage sein müssen, benutzerdefinierte Fehlerbehandlung und benutzerdefinierte 404-Behandlung zu ermöglichen, sind Sie effektiv geschraubt.

Die gute Nachricht ist, abgesehen von API und Ajax, dass sich jemand nur darum kümmern wird, was der Statuscode eigentlich ist, wenn er sich die Header trotzdem ansieht. In diesem Fall sehen sie, dass Sie laufen IIS und bedauern Sie nur.

    
___ qstntxt ___

Damit ColdFusion seine Fehler anstatt nur eines Serverfehlers (Code 500) anzeigt, habe ich web.config gemäß einigen Ergebnissen auf dieser Site hinzugefügt.

Das Problem scheint gelöst, aber ...

Wenn ich ein nicht existierendes Verzeichnis im IIS besuche, gibt es eine "leere" Seite ohne Statuscode zurück. Wenn ich es von Passthrough auf Auto zurücksetze, nimmt der IIS die Fehlerseite erneut und es wurden keine ColdFusion-Fehler mehr angezeigt.

Jeder hat eine Lösung? Ich habe recherchiert und "vermutet", dass der JWildcardhandler vielleicht das Problem ist, aber ich konnte keine Lösung dafür finden.

Sehr geschätzt!

    
___
Sean Stewart 15.10.2012 03:47
quelle

Tags und Links