C# BackgroundUploader中出现异常

C# BackgroundUploader中出现异常,c#,windows-runtime,microsoft-metro,windows-store-apps,background-transfer,C#,Windows Runtime,Microsoft Metro,Windows Store Apps,Background Transfer,我正试图上传一些avi文件到服务器。它可以与HttpRequest一起工作,但我需要继续上传,即使我挂起应用程序,所以这就是为什么我尝试使用BackgroundUploader。我在msdn上遵循此指南。所以我的代码看起来像这样 StorageFile storageFile = KnownFolders.VideosLibrary.GetFileAsync("fileName"); BackgroundUploader uploader = new BackgroundUploader();

我正试图上传一些avi文件到服务器。它可以与HttpRequest一起工作,但我需要继续上传,即使我挂起应用程序,所以这就是为什么我尝试使用BackgroundUploader。我在msdn上遵循此指南。所以我的代码看起来像这样

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发出的请求,它们是相等的,这就是我想要的。

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

错误来自您的服务器。我建议使用来分析请求和响应。我的猜测是,您没有遵循多部分/表单数据标准。请看Wikipedia示例:。感谢您的回复。你说得对,我应该考虑自己用小提琴。不管怎样,我试过了,找到了我最初的想法,但找不到合适的解决方案,我对内容类型的定义是错误的。所以现在我使用的是“multipart/related;type=\”application/xop+xml\”,这是Fiddler在调试时建议的。但是现在我得到了(400)个错误的请求异常,不幸的是我没有得到任何额外的信息。所以我不知道这是什么原因。