2009-02-17 6 views
5

Attualmente sto lavorando su un piccolo progetto, in cui è necessario inviare un file potenzialmente di grandi dimensioni su Internet.Dimensioni e timeout sul contratto di servizio di streaming in WCF

Dopo alcune discussioni, ho deciso di utilizzare l'opzione di streaming anziché un approccio frammentario. I file possono potenzialmente essere molto grandi, non voglio davvero specificare un limite superiore esatto, 2 GB o 4 GB, chi lo sa.

Naturalmente ciò può richiedere molto tempo. Ancora una volta non voglio davvero avere un timeout. Ci vuole solo il tempo necessario, non importa.

Mentre provavo a cercare file diversi di dimensioni diverse, ho lentamente, passo dopo passo, sintonizzato le proprietà del mio BasicHttpBinding. Mi sto solo chiedendo se i valori che ho trovato siano fondamentalmente ok, o se sono totalmente malvagi?

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" 

Questo non sembra giusto in qualche modo, questi sono solo i valori massimi possibili per ciascuna struttura di dati sottostante. Ma non so cos'altro fare.

Così ancora una volta:

È questo in sostanza l'approccio giusto? O ho completamente frainteso e abusato del quadro qui?

Grazie

risposta

2

Beh, un approccio più naturale potrebbe essere quella di inviare il file in una sequenza di pezzi di medie dimensioni, con un messaggio finale per commettere; questo rende anche possibile riprendere dall'errore. C'è forse un leggero problema DOS con numeri completamente aperti ...

0

Ho già un problema con lo streaming quando la connessione tra client WCF e server passa attraverso la VPN. Se interessati, leggi di più in this thread.

Se il flusso è abbastanza grande da essere trasmesso in streaming per più di un minuto, si verifica un'eccezione.