2009-02-17 8 views
5

Obecnie pracuję nad małym projektem, w którym muszę wysłać potencjalnie duży plik przez Internet.Rozmiary i limity czasu na kontrakcie na usługi przesyłania strumieniowego w WCF

Po krótkiej dyskusji zdecydowałem się użyć opcji przesyłania strumieniowego zamiast podejścia polegającego na podrywaniu. Pliki mogą być potencjalnie bardzo duże, naprawdę nie chcę określać dokładnej górnej granicy, 2GB, może 4GB, kto wie.

Oczywiście może to zająć dużo czasu. Znowu tak naprawdę nie chcę mieć limitu czasu. To trwa tak długo, jak to tylko możliwe, nie ma znaczenia.

Podczas szturchania różnych plików o różnych rozmiarach, powoli, krok po kroku, dostroiłem właściwości mojego BasicHttpBinding. Zastanawiam się tylko, czy wartości, które wymyśliłem, są w zasadzie w porządku, czy też są całkowicie złe?

transferMode="Streamed" 
sendTimeout="10675199.02:48:05.4775807" 
receiveTimeout="10675199.02:48:05.4775807" 
openTimeout="10675199.02:48:05.4775807" 
closeTimeout="10675199.02:48:05.4775807" 
maxReceivedMessageSize="9223372036854775807" 

To po prostu nie jest w porządku, to tylko maksymalne możliwe wartości dla każdej struktury danych. Ale nie wiem, co jeszcze mogę zrobić.

Znowu:

Czy to w zasadzie właściwe podejście? Czy też całkowicie nie rozumiem i niewłaściwie używam ram tutaj?

Dzięki

Odpowiedz

2

Cóż, bardziej naturalne podejście może być, aby wysłać plik w sekwencji w kawałki średniej wielkości, z końcowym komunikatem popełnienia; to również umożliwia wznowienie z powodu błędu. Prawdopodobnie istnieje niewielki problem z systemem DOS z całkowicie otwartymi numerami ...

0

Mam już problem z przesyłaniem strumieniowym, gdy połączenie między klientem WCF a serwerem przechodzi przez VPN. Jeśli jesteś zainteresowany, czytaj więcej w this thread.

Jeśli strumień jest wystarczająco duży, aby można go było przesyłać strumieniowo przez ponad minutę - wystąpi wyjątek.

Powiązane problemy