BackgroundUploader中的异常

时间:2013-10-18 13:41:04

标签: c# windows-runtime microsoft-metro windows-store-apps background-transfer

我正在尝试将一些avi文件上传到服务器。它与HttpRequest工作正常但我需要继续上传,即使我暂停应用程序,这就是为什么我尝试使用BackgroundUploader。我在msdn http://msdn.microsoft.com/en-us/library/windows/apps/jj152727.aspx上遵循此指南。所以我的代码看起来像这样。

StorageFile storageFile = KnownFolders.VideosLibrary.GetFileAsync("fileName");
BackgroundUploader uploader = new BackgroundUploader();
uploader.Method = "POST";
uploader.SetRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
var fs = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
IInputStream aaaa = fs.GetInputStreamAt(0);

UploadOperation upload = uploader.CreateUploadFromStreamAsync(new Uri("uploadUri"), aaaa);

await HandleUploadAsync(upload, true);

其余部分与MSDN相同。我在线路上的方法HandleUploadAsync中获得异常不支持的媒体类型(415)

await upload.StartAsync().AsTask(cts.Token, progressCallback);

我做错了什么?或者是什么导致这种例外?

编辑:我解决了我的问题,因为我在这里和我的回答中做了评论。我认为最后我基本上只是将一些数据发送到服务器,这些数据被识别并解释为我想要的。因此,如果我使用BackgroundUploader,我不仅会上传一些文件,而且还会发送有关我如何做的信息(正如我在回答中所提到的)。因此,通过相同的想法,我也可以将文件夹上传到服务器,并且我不发送任何实际内容,只是关于如何做到这一点的一些描述。如果我比较我正在通过HttpRequest和BackgroundUploader进行的请求它们是相同的,这就是我想要的。

1 个答案:

答案 0 :(得分:0)

所以问题部分是请求的标题。我的请求中有一些标题被服务器识别,我试图通过SetRequestheader方法将它放到BackgroundUploader但它没有用。正如Kieqic建议我使用Fiddler,并且我比较了HttpRequest和BackgroundUploader提出的请求。我发现它们完全不同。因此,通过SetRequestheader,我添加一些部分,如期望的Content-Type和标题的其余部分,使它们相等,我在文件的内容之前添加它作为字节数组。这样可以得出结论,在我的案例中使用Fiddler来帮助我构建请求标题。