我在本网站和其他地方已经多次看到Silverlight上传示例here,但我对它是否真的安全有疑问。
快速回顾:此代码“上传”到ASHX处理程序。 UploadFileChunk()实例化WebClient并使用OpenWriteAsync和OpenWriteCompletedEventHandler从文件中发送一些位。 WebClient使用带有两个QueryString参数的URI与处理程序通信:“filename”和“append”。将块中的位写入WebClient的输出流后,事件处理程序检查是否已发送所有位,如果不是,则再次调用UploadFileChunk()以发送另一个块。
在服务器端,处理程序很简单 - 使用FileStream将位写入磁盘,如果append = 1则附加,如果append = 0则重新创建。
这种架构似乎很可能导致问题。是否保证服务器在收到下一个请求之前完成写入位并关闭文件流并开始从下一个块中追加位?我对Silverlight方面的OpenWriteCompletedEventHandler的理解是,当你完成写操作并关闭流时,这并不一定意味着这些位已经通过线路发送,更不用说由服务器端处理程序处理了。 / p>
谢谢!