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?
Jaką wersję SignalR używasz? – davidfowl
Wszystkie komponenty są w wersji 1.1.3 – Dmitry
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