2010-07-25 10 views
5

Następująca linia kodu zgłasza ArgumentNullException pod Chrome i Firefox w silverlight. Używam HttpWebRequest, aby opublikować plik na serwerze. Wyjątek nie występuje w IE i występuje tylko wtedy, gdy przesyłam większy plik (5 MB). W IE działa dobrze. Nie widziałem żadnego powodu w dokumentacji, dlaczego kod rzuciłby ten wyjątek.Dlaczego EndGetResponse rzuca ArgumentNullException?

//note that asyncResult is not null 
response = (HttpWebResponse)request.EndGetResponse(asyncResult); 

Oto ślad stosu z wyjątkiem:

at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) 
at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState) 
at System.Net.Browser.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState) 

i wewnętrzny wyjątek:

at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state) 
at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 
at DC.FileUpload.FileUpload.<>c__DisplayClassc.<UploadFileEx>b__a(IAsyncResult asyncResult) 

Odpowiedz

1

mam dokładnie ten sam błąd dziwne ze HttpWebResponse (ale w zupełnie innych okolicznościach) mało kilka dni temu. W moim przypadku był to problem wielowątkowy. Wygląda na to, że główny wątek i jeden z działających wątków (z delegatem) próbuje udostępnić pewną zmienną. Mogę więc zaproponować, abyś spróbował przenieść wszystkie zmienne poziomu klasy do ciał metod (lub dodać blokowanie dla sekcji krytycznych), a następnie debugować aplikację za pomocą aktywnego okna "Wątki".
Aby włączyć to okno, kliknij Debug => Windows => Wątki podczas debugowania. Mam nadzieję, że pomoże ci w walce z tym dziwnym błędem.

1

Otrzymuję ten wyjątek za każdym razem, gdy nie mogę połączyć się z serwerem w celu wykonania żądania. To może być zrozumiałe, ale widzę również ten błąd dla długich żądań, nawet gdy I może dotrzeć do serwera. Żądania, które trwają dłużej niż 10 sekund, powodują, że klient kończy się niepowodzeniem z tym wyjątkiem.

To może mieć coś wspólnego ze środowiskiem, w którym działa Silverlight. Twierdzisz, że w IE błąd nie występuje, ale działa w Firefoksie i Chrome. Moja aplikacja działa poza przeglądarką. Z tego mogę tylko założyć, że stos klienta nadal wykorzystuje IE w jakiś sposób, jeśli działa w IE.

+0

+1 Wydaje się to zgodne z moją własną sytuacją. – jv42

Powiązane problemy