2012-10-10 10 views
7

Korzystam z N2Cms i szukam pewnych problemów, które mam z tym. Ma panel nawigacyjny po lewej stronie, który ładuje się przez ajax podczas rozszerzania drzewa.500 Wewnętrzny błąd serwera IIS7 Zakodowany adres URL

Kod pobierający obiekt potomny węzła wywołuje plik ashx z niektórymi parametrami. Jeden parametr dotyczy ścieżki i zawiera ukośniki. Z tego powodu został zakodowany.

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

miałem żadnych problemów z tym na moim serwerze rozwoju (działa IIS 7.5), ale kiedy wdrożony na naszym serwerze testowym (IIS7) nawigacja nie działa.

Badanie tego wykazało, że powyższy URL daje błąd 500.

Gdybym zdekodować URL do

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

to działa bez żadnych problemów.

Niestety nie mogę zmienić kodu, który generuje to jako część kodu źródłowego n2cms i zakładam, że został zakodowany z ważnego powodu.

Czy ktoś wie coś, co mogę zrobić na moim web.config, aby umożliwić zakodowane parametry lub coś, co mogę zmienić na serwerze iis?

EDYCJA: Ten link wydaje się sugerować, że robi to celowo jako zabezpieczenie. http://msdn.microsoft.com/en-us/library/ee656542.aspx

Proponowane rozwiązanie jest uaktualnienie do .net 4.0 i dodać następujące web.config

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

Niestety ta wydaje się nie mieć wpływu.

Wszelkie pomysły, dlaczego to nie działa?

Odpowiedz

1

Może to być narzędzie URLScan. Skanowanie URL blokuje adresy URL na podstawie reguł w pliku konfiguracyjnym. Ma również swój własny plik dziennika, dzięki czemu można stwierdzić, patrząc na dziennik URLScan.

Wykonaj wyszukiwanie google dla domyślnej lokalizacji URLSCan.

+0

URLScan wydaje się być dodatkiem iis. Nie sądzę, żebyśmy to zainstalowali. Nie mogę go poprawić w programach do usuwania programów lub w funkcjach systemu Windows. – sianabanana

+0

Sprawdź tutaj C: \ Windows \ System32 \ inetsrv \ urlscan lub tutaj C: \ Windows \ SysWOW64 \ inetsrv \ urlscan. Lokalizacja zależy od tego, czy korzystasz z wersji 64-bitowej. Jeśli urlscan istnieje w jednej z tych lokalizacji i istnieje podkatalog "logs", to właśnie go uruchamiasz. –

+0

Jak już powiedziałem, nie jest zainstalowany. Te foldery nie istnieją i nie ma żadnych odniesień do urlscan w dowolnym pliku lub folderze na komputerze. – sianabanana

1

Wygląda na to, że Twój adres URL przechodzi przez kodowanie 2 html. Czy na serwerze IIS7 jest aktywny jakiś moduł do przepisywania adresów URL?

+0

Nie jestem tego świadomy. Jest to standardowa instalacja serwera Windows 2008 (z iis7). Myślę, że jest to "funkcja" iis7 jako podobna standardowa instalacja z tym samym kodem na iis7.5, nie ma tej "cechy". – sianabanana

0

OK, dostaję się gdzieś z tym.

Podczas próby znalezienia błędu w dziennikach usług IIS i niepowodzenia, a następnie przeglądając wiele postów dotyczących żądania nieudanego śledzenia i nadal nie uzyskując żadnych błędów w iis, uznałem, że żądanie nie dotarło do IIS.

Patrząc wstecz na błąd serwera, była tam również wskazówka.
500 Wewnętrzny błąd serwera. Żądanie zostało odrzucone przez filtr HTTP.

To jest firewall !! Wyłączyliśmy filtr HTTP i teraz działa :)

Muszę teraz zbadać, do czego ten filtr HTTP powinien nas chronić i czy jesteśmy bezpieczni, teraz go wyłączyliśmy.