2010-02-28 14 views
5

Używam Sitecore 6.1 na Windows 2008, IIS7 i próbuję użyć modułu URL Rewrite do przekierowania. Po włączeniu reguły i kliknięciu adresu URL, który ją wyzwala, otrzymuję YSOD. Ta sama zasada działa doskonale w witrynie niedzierakowej na tym samym komputerze. Zgodnie z nieudanym monitem żądania, moduł przepisywania działa dobrze, ale potem Sitecore zgłasza wyjątek, nawet jeśli przekierowanie wskazuje na inny serwer. Jest to prawdopodobnie wynikiem czegoś, co źle skonfigurowałem, ale po prostu nie mogę zrozumieć, dlaczego to nie działa. Szczegóły z YSOD są poniżej.Dlaczego Sitecore generuje wyjątek NullReferenceException po przekierowaniu na jedną ze swoich stron?

[NullReferenceException: Object reference not set to an instance of an object.] 
    Sitecore.Nexus.Web.HttpModule.(Object sender, EventArgs e) +273 
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 
+1

czy było to potwierdzone rozwiązanie? brak logowania w module powoduje mi żal. – Dann

Odpowiedz

3

Sitecore ma swój własny mechanizm przekierowywania adresów URL, więc niektóre kable prawdopodobnie się tu krzyżują. Być może musisz przenieść swój HttpModule, aby był wykonywany wcześniej w łańcuchu.

+0

Śledzenie awarii wskazuje na ponowne napisanie, zanim rozpocznie się potok Sitecore. Czy nadal ma sens, że sprawy dzieją się w niewłaściwej kolejności? – Abs

+0

Przypuszczam, że nie. Interesujące jest to, że ten moduł Nexusa jest pierwszym zarejestrowanym modułem Sitecore (właśnie sprawdziłem mój web.config). Czy próbowałeś go po prostu usunąć? Nie jestem pewien, co robi. – Bryan

+0

OK, Nexus jest integralną częścią Sitecore ... nie można go wyłączyć. Pytanie: Co się dzieje, gdy przeglądasz docelowy adres URL w przeglądarce? Ten sam błąd? Jaki jest pełny adres URL? Czy ma rozszerzenie, którego Sitecore nie przetworzy? – Bryan

1

można uzyskać ten sam błąd, gdy robi

Response.Redirect("~/SomeUrl.aspx") 

wewnątrz kod C#, tak aby rozwiązać ten problem jest użycie przeciążony:

Response.Redirect("~/SomeUrl.aspx", true) 

który natychmiast zakończyć reakcję.

Moduł przepisywania oczywiście nie kończy żądania natychmiast pozwalając Sitecore trafić ten problem. Możesz obejść ten problem, tworząc moduł do obsługi przekierowań lub próbując rozszerzyć moduł URL Rewrite, aby natychmiast zakończyć odpowiedź.

1
+0

Problem z tą "poprawką" polega na tym, że jeśli używasz nowej opcji adresu URL bez rozszerzenia (która powoduje rozszerzenie .ASPX), nie możesz uruchomić projektu w trybie klasycznym. Będzie obsługiwać 404 strony. – ianpoley

+0

@ianpoley - Zabawne było, po przejściu do klasycznego, a następnie z powrotem do zintegrowanego to zostało naprawione – Dann