2013-10-02 8 views
7

mam jakiś problem, gdy postępować pobierania lub przesyłania pliku (WebClient.DownloadFileAsync | UploadFileAsync lub HttpWebRequest) i jednoczesne wywoływanie metod SignalR-piasta:SignalR: brak wiadomości aż do pliku przesłanego/pobranych w tym samym miejscu internetowej

SignalR połączenia zostały zatrzymane do momentu zakończenia ładowania pliku. Wygląda na to, że: wszyscy wywołują sygnały. Wszystkie połączenia z kolejką są wykonywane dalej (po wczytaniu pliku).

Mój kod fragment:

hubProxy.Invoke("TraceDocumentUploadingRequest", callerId, fileName, "File loading started ", 0); 

DownloadFileByKey(fileKey, (progressPercentage, bytesSent) => { hubProxy.Invoke("TraceDocumentUploadingRequest", callerId, fileName, "File loading in progress", progressPercentage); }); 

hubProxy.Invoke("TraceDocumentUploadingRequest", callerId, fileName, "File loading finished", 100); 

drugie „TraceDocumentUploadingRequest” wywołanie metody piasty (w procedurze obsługi załadować pliku) zostanie wykonana na piaście po zakończeniu pobierania pliku.

Obsługa plików ładowania plików jest wykonywana zarówno w bieżącym wątku, jak i w innym (powiązanym z realizacją metody DownloadFileByKey) - wynik jest taki sam.

W jaki sposób mogę uniknąć tego zachowania i wymuszać wywołanie metody centralnej w odpowiednim czasie?

+0

Jaką wersję SignalR używasz? – davidfowl

+0

Wszystkie komponenty są w wersji 1.1.3 – Dmitry

+4

To jest coś, co naprawiliśmy w późniejszych wersjach SignalR. W celu obejścia tego problemu można spróbować zwiększyć liczbę jednoczesnych połączeń w menedżerze punktów usług do wartości 100: ServicePointManager.DefaultConnectionLimit = 100; http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit.aspx – davidfowl

Odpowiedz

0

Podsumowując komentarze Davida Fowla, problem był związany z komunikatem SignalR w wersji 1.1.3, ale został rozwiązany w późniejszej wersji. W szczególności wersja 2.0.0

Powiązane problemy