目前,我正在尝试使用便携式库中的 Web 服务从服务器上传文件。对于每个文件,我都这样做:
WebRequest request = WebRequest.Create("http://localhost:49364/" + url);
request.BeginGetResponse((aResult) =>
{
var retour = aResult.AsyncState as WebRequest;
WebResponse reponse = retour.EndGetResponse(aResult);
callback(reponse);
}, request);
在我的回调方法中,我这样做:
byte[] bytes;
string currentFileName = fileName;
string categorie = currentFileName.Split('/').ElementAt(0);
string dir = currentFileName.Split('/').ElementAt(1);
using (var reader = new BinaryReader(reponse2.GetResponseStream()))
{
bytes = new byte[reponse2.ContentLength];
reader.Read(bytes, 0, (int)reponse2.ContentLength);
}
fileService.EnsureFolderExists(categorie);
fileService.EnsureFolderExists(fileService.PathCombine(categorie, dir));
fileService.WriteFile(currentFileName, bytes);
我将整个文件作为字节数组获取。但是,使用 winRT,写入文件会很快停止,并且我的本地文件不完整。如果我尝试只上传一个文件,写入也会停止。但是,如果我尝试使用 Silverlight(我将 MvvmCross 扩展到 Silverlight),则编写完成。我还没有测试过 MonoDroid 和 MonoTouch。
所以,我的问题是:为什么写作停止了?