我正在嘗試使用C#與Live Connect API上傳一個空白(或稱「測試」)文本文件到SkyDrive。該代碼我到目前爲止有:將字符串作爲文本文件上傳到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 Express上開發Windows 8 Enterprise的評估,如果這樣做有很大區別)
編輯︰我終於找到「Stream.AsInputStream」,但現在我得到相同的錯誤this
型「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);
我得到了同樣的異常,有沒有辦法解決。 – Sean 2012-08-26 12:48:18