Я видел образец загрузки Silverlight здесь упоминается несколько раз на этом сайте и в других местах, но у меня вопрос, действительно ли это безопасно.
Краткий обзор: этот код выполняет «фрагментированную» загрузку в обработчик ASHX. UploadFileChunk () создает экземпляр WebClient и использует OpenWriteAsync и OpenWriteCompletedEventHandler для отправки некоторых битов из файла. WebClient взаимодействует с обработчиком, используя URI с двумя параметрами QueryString: «filename» и «append». После записи битов в блоке в выходной поток WebClient обработчик событий проверяет, все ли биты были отправлены, и, если нет, он снова вызывает UploadFileChunk (), чтобы отправить другой блок.
На стороне сервера обработчик прост - записать биты на диск с помощью FileStream, добавить, если append = 1, и создать заново, если append = 0.
Эта архитектура, скорее всего, приведет к проблемам. Гарантированно ли сервер завершит запись битов и закрытие файлового потока до того, как он получит следующий запрос и начнет добавлять биты из следующего фрагмента? Насколько я понимаю, OpenWriteCompletedEventHandler на стороне Silverlight заключается в том, что когда вы завершаете операцию записи и закрываете поток, это не обязательно означает, что биты еще были отправлены по сети, не говоря уже о том, что они были обработаны обработчиком на стороне сервера.
Спасибо!