Ho avuto un problema banale qualche giorno fa: il classico "il metodo funziona se lo chiamo da qui, se lo chiamo da quà invece el va no".
Il metodo in questione salvava un array di byte su un blob a partire da uno stream. In particolare, quando questo stream partiva direttamente da un FileUpload control prendendo lo stream FileContent andava tutto alla perfezione, se invece mi creavo un MemoryStream a partire da un file su FileSystem e lo passavo al metodo, nulla....

Dopo qualche prova, mi sono accorto che costruivo il memoryStream col metodo Save (nel mio caso, di un oggetto image) passandogli come primo parametro il mio memoryStream, e poi lo passavo così com'era al metodo.

Peccato che il memoryStream in questo modo rimanesse posizionato alla fine! Quindi io mi costruivo un array di byte grande quanto lo stream, e poi ciclavo i byte dello stream, che continuava a restituirmi 0 essendo posizionato alla fine.

Morale della favola: quando lavorate con gli stream, controllate sempre se questo è all'inizio, alla fine e se potete navigarci! Nel mio caso, è bastato mettere un bel controllo sulla posizione e nel caso resettarla, per risolvere il problema!