Live Connect API で C# を使用して、空の (または "test" と表示されている) テキスト ファイルを SkyDrive にアップロードしようとしています。私がこれまでに持っているコード:
LiveConnectClient client = await LiveSignin();
string folderID = await getFolder(client);
client.BackgroundUploadAsync(folderID, "pins.txt", "", OverwriteOption.Rename);
ここで、LiveSignin() はサインイン コードを処理して LiveConnectClient を返す関数であり、getFolder(LiveConnectClient client) はアップロード先のフォルダー ID を取得する関数です。
そのコードは、空白の文字列 (最後の行の 3 番目のパラメーター) が "Windows.Storage.Streams.IInputStream" でなければならないというエラーをスローしますが、文字列を IInputStream に変換する方法に関するドキュメントが見つからないようです。 、または、さらに言えば、私が見つけることができる「IInputStream」に関するドキュメントの多く。
以前のバージョンの Windows ランタイム/Live Connect (別のプロジェクト) で使用していたもの:
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 にアップロードするにはどうすればよいでしょうか? (Windows 8 Enterprise の評価で Visual Studio 2012 Express で開発し、それが大きな違いを生む場合)
編集:最終的に「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);