我想用C#与实时连接API上传空白(或一个写着“测试”)的文本文件到SkyDrive。 我到目前为止的代码:
LiveConnectClient client = await LiveSignin();
string folderID = await getFolder(client);
client.BackgroundUploadAsync(folderID, "pins.txt", "", OverwriteOption.Rename);
其中LiveSignin()是处理符号的代码,并返回一个LiveConnectClient和的GetFolder(LiveConnectClient客户端)是获取我想要上传到该文件夹ID功能的功能。
该代码抛出关于空字符串(最后一行第三个参数)的错误不必是一个“Windows.Storage.Streams.IInputStream”,但我似乎无法找到如何将字符串转换成IInputStream任何文件或者,对于这个问题,很多的“IInputStream”的任何文件,我可以找到的。
与早期版本的Windows运行时的/活动连接(在其他项目中)我用了:
byte[] byteArray = System.Text.Encoding.Unicode.GetBytes(Doc);
MemoryStream stream = new MemoryStream(byteArray);
App.client.UploadCompleted += client_UploadCompleted;
App.client.UploadAsync(roamingSettings.Values["folderID"].ToString(), docTitle.Text + ".txt", stream);
但抛出了很多错误,现在(他们大多因为UploadAsync已被替换BackgroundUploadAsync)。
那么,有没有办法将字符串转换为IInputStream,还是我也不需要使用IInputStream? 如果我的方法是行不通的,如何将一个从C#Metro应用上传一个空白的文本文件到SkyDrive? (在Visual Studio 2012次快车在Windows 8企业的评价发展,是否是有很大差异。)
编辑:我终于找到了“Stream.AsInputStream”,但现在我得到了同样的错误作为本
类型的未处理的异常“System.AccessViolationException”发生在Windows.Foundation.winmd
其他信息:试图读取或写入保护内存。 这通常是指示其他内存已损坏
现在的代码:
LiveConnectClient client = await LiveSignin();
string folderID = await getFolder(client);
Stream OrigStream = new System.IO.MemoryStream(System.Text.UTF8Encoding.UTF8.GetBytes("test"));
LiveOperationResult result = await client.BackgroundUploadAsync(folderID, "pins.txt", OrigStream.AsInputStream(), OverwriteOption.Rename);