2012-10-10 15 views
7

Ich benutze N2Cms und bin in einigen Fragen, die ich mit ihm habe. Es hat eine Navigationsleiste auf der linken Seite, die über Ajax lädt, wenn Sie den Baum erweitern.500 Interner Server Fehler IIS7 Encoded URL

Der Code, der die Kinder des Knotens ruft, ruft eine Aschx-Datei mit einigen Parametern auf. Ein Parameter ist für einen Pfad und enthält Schrägstriche. Aus diesem Grund wurde es codiert.

.../cms/Content/Navigation/LoadTree.ashx?target=preview&selected=%252fhome%252fhelp-and-advice%252f 

Ich habe keine Probleme mit diesem auf meinem Entwicklungsserver hatte (mit IIS 7.5), aber wenn sie auf unserem Testserver bereitgestellt (iis7) die Navigation nicht funktioniert.

Die Untersuchung hat gezeigt, dass die obige URL einen Fehler von 500 gibt.

Wenn ich die URL

.../cms/Content/Navigation/LoadTree.ashx?target=preview&selected=/home/help-and-advice/ 

dekodieren funktioniert es ohne Probleme.

Leider kann ich den Code, der dies erzeugt, nicht als Teil des n2cms-Quellcodes ändern, und ich gehe davon aus, dass er aus einem guten Grund codiert wurde.

Weiß jemand etwas, das ich entweder in meiner web.config tun kann, um codierte Parameter zu erlauben, oder etwas, das ich auf dem iis Server ändern kann?

BEARBEITEN Sie: So scheint dieser Link, dass dies tun dies absichtlich als eine Sicherheitsmaßnahme. http://msdn.microsoft.com/en-us/library/ee656542.aspx

Die vorgeschlagene Lösung ist ein Upgrade 4.0 auf .NET und die folgenden auf die web.config

<configuration> 
<uri> 
    <schemeSettings> 
    <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/> 
    </schemeSettings> 
</uri> 
</configuration> 

Leider scheint fügen diese keine Wirkung zu haben.

Irgendwelche Ideen, warum das nicht funktioniert?

Antwort

1

Dies könnte das URLScan-Dienstprogramm sein. URL-Scan blockiert URLs basierend auf den Regeln in ihrer Konfigurationsdatei. Es verfügt auch über eine eigene Protokolldatei, so dass Sie sicher sein können, indem Sie sich das URLScan-Protokoll ansehen.

Führen Sie eine Google-Suche nach dem Standardstandort URLScan aus.

+0

URLScan scheint ein Addon zu sein. Ich glaube nicht, dass wir es installiert haben. Ich kann es in den Add Remove-Programmen oder den Windows-Features nicht gut machen. – sianabanana

+0

Überprüfen Sie hier C: \ Windows \ System32 \ inetsrv \ urlscan oder hier C: \ Windows \ SysWOW64 \ inetsrv \ urlscan. Der Speicherort hängt davon ab, ob Sie 64 Bit ausführen. Wenn urlscan an einem dieser Orte vorhanden ist und ein "logs" -Unterverzeichnis vorhanden ist, führen Sie es aus. –

+0

Wie gesagt, es ist nicht installiert. Diese Ordner sind nicht vorhanden und verweisen auch nicht auf URLscan in einer Datei oder einem Ordner auf dem Computer. – sianabanana

1

Es scheint, dass Ihre URL durch 2 HTML codiert. Ist auf Ihrem IIS7-Server ein URL-Rewriting-Modul aktiv?

+0

Nicht dass ich mir dessen bewusst bin. Es ist eine Standard Windows Web Server 2008 Installation (mit iis7). Ich denke, das ist ein "Feature" von iis7 als eine ähnliche Standardinstallation mit dem gleichen Code auf iis7.5 hat dieses "Feature" nicht. – sianabanana

0

OK, ich komme irgendwo mit diesem.

Bei dem Versuch, den Fehler in den IIS-Protokollen und Fehler zu finden, dann durch viele Beiträge über fehlgeschlagene Tracing-Anfrage und immer noch keine Fehler in IIS zu bekommen, dachte ich, dass die Anfrage wurde nur nicht zu IIS.

Im Rückblick auf den Serverfehler gab es auch einen Hinweis darauf.
500 Interner Serverfehler. Die Anfrage wurde vom HTTP-Filter abgelehnt.

Es ist die Firewall !! Wir haben den HTTP-Filter deaktiviert und jetzt funktioniert es :)

Ich muss jetzt untersuchen, wofür dieser HTTP-Filter uns schützen sollte und wir sind sicher, jetzt haben wir es ausgeschaltet.

Verwandte Themen