Кажется необычным то, что WebClient в Silverlight не может предоставить средство для доставки потока на сервер с событиями прогресса. Это особенно удивительно, так как это предлагается для загрузки строки!
С помощью HttpWebRequest можно кодировать то, что, кажется, делает то, что вы хотите.
В обратном вызове для BeginGetRequestStream
вы можете получить поток для исходящего запроса, а затем прочитать фрагменты из потока вашего файла и записать их в выходной поток. К сожалению, Silverlight не начинает отправку вывода на сервер, пока поток вывода не будет закрыт. Где все эти данные в конечном итоге хранятся в то время, пока я не знаю, возможно, что если он станет достаточно большим, SL может использовать временный файл, чтобы не нагружать память машины, но опять же, он может просто хранить все это в памяти в любом случае.
Единственное решение, которое возможно, это написать протокол HTTP через сокеты.