2013-10-02 8 views
7

Ich habe ein Problem, wenn gehen Download oder Upload-Datei (WebClient.DownloadFileAsync | UploadFileAsync oder von HttpWebRequest) und SignalR-Hub Methoden gleichzeitig aufrufen:SignalR: keine Messaging bis Datei hochgeladen/auf der gleichen Website heruntergeladen

SignalR Anrufe wurden gestoppt, bis die Datei geladen wurde. Es sieht so aus: Alle Signaler-Aufrufe in Warteschlangen. Alle in die Warteschlange eingereihten Aufrufe werden weiter ausgeführt (nach dem Laden der Datei).

Mein Codefragment:

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); 

Second "TraceDocumentUploadingRequest" Hub Methodenaufruf (in der Datei Lastaufnahmemittel) auf der Nabe nach Datei herunterzuladen Abschluss ausgeführt werden.

Dateiladeprogramm wird sowohl im aktuellen als auch in einem anderen Thread ausgeführt (siehe DownloadFileByKey-Methodenrealisierung) - Ergebnis ist identisch.

Wie kann ich dieses Verhalten vermeiden und Hub-Methodenaufrufe zur richtigen Zeit erzwingen?

+0

Welche Version von SignalR verwenden Sie? – davidfowl

+0

Alle Komponenten sind von 1.1.3 Version – Dmitry

+4

Das haben wir in späteren Versionen von SignalR behoben. Um dieses Problem zu umgehen, können Sie versuchen, die Anzahl der gleichzeitigen Verbindungen im Service Point Manager auf etwa 100 zu erhöhen: ServicePointManager.DefaultConnectionLimit = 100; http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit.aspx – davidfowl

Antwort

0

Um die Kommentare von David Fowl zusammenzufassen, war das Problem ein Fehler in SignalR Version 1.1.3, aber behoben in der späteren Version. Speziell Version 2.0.0