2008-10-04 22 views
5

Używamy programu .NET 3.5 SP1.Brak pamięci - Nieskończona pętla - ASP.NET AJAX Framework

Niedawno w IE niektórzy z naszych użytkowników zaczęli od czasu do czasu otrzymywać błędy "Out of Memory". To nie zdarza się cały czas. Udało mi się go powtórzyć kilka razy i odkryłem, że ten kod z pliku AjaxControlToolkit.Common.Common.js powodował nieskończoną pętlę: AjaxControlToolkit.TextBoxWrapper.registerClass ('AjaxControlToolkit.TextBoxWrapper', Sys.UI. Zachowanie) AjaxControlToolkit.TextBoxWrapper.validatorGetValue = funkcji (ID) { sterowania zmienna = $ get (id) if (kontrola & & control.AjaxControlToolkitTextBoxWrapper) { powrotu control.AjaxControlToolkitTextBoxWrapper.get_Value()} powrotu AjaxControlToolkit .TextBoxWrapper._originalValidatorGetValue (id);}

Ostatnia linia (która nazywa _originalValidatorGetValu e) zasadniczo wywołuje tę funkcję w kółko, ponieważ control.AjaxControlToolkitTextBoxWrapper jest niezdefiniowany.

Funkcja zdefiniowana tuż nad nim to AjaxControlToolkit.TextBoxWrapper.get_Wrapper (control) i może być użyta do utworzenia opakowania, jeśli nie istnieje, ale nie mam wrażenia, że ​​chcę zmienić strukturę, jeśli Jestem jedynym, który widział ten błąd na wolności.

Błąd nie zawsze występuje. Wydaje się, że występuje, gdy pierwszy załadowany adres URL zawiera punkt historii AJAX. Jeśli otworzysz stronę i zaczniesz z nią grać, co spowoduje dodanie punktów historii, działa dobrze. Ale jeśli skopiujesz i wkleisz adres URL do innego okna przeglądarki, pojawi się ten problem.

Dlatego domyślam się, że robię coś złego w sterowaniu historią, która nie ustawia prawidłowo owijaczy. Mimo to wydaje się, że istnieje nieskończona pętla.

Wszelkie pomysły/wskazówki?

Wypełniłem raport o błędzie w Microsoft Connect. Podczas wypełniania i testowania różnych scenariuszy zauważyłem, że działa dobrze lokalnie, ale nie zdalnie. Porównując moje środowisko produkcyjne/programistyczne, zauważyłem, że CombineScripts był fałszywy lokalnie. Wdrożenie tego do mojego serwera produkcyjnego najwyraźniej rozwiązało problem.

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=373171

+0

Mam ten sam problem. Występuje tylko w inscenizacji i produkcji, w której jest więcej niż jeden serwer WWW. –

Odpowiedz

1

Jeśli usuniesz LoadScriptsBeforeUI = "false" z ScriptManager, problem zostanie rozwiązany.

+1

Jakie są Twoje źródła dotyczące tego rozwiązania? –

Powiązane problemy