BackgroundTransferService/Request

8
我有问题(实际上不止一个问题),我正在开发使用BackgroundTransferService传输录制的wav文件的Windows Phone 8应用程序,在HTC 8S上工作得几乎正常,但在Nokia Lumia 920上似乎存在奇怪的行为,它具有一些无法理解的上传限制,恰好为0.5MB,即512KB,在WiFi下似乎工作正常,但是在通过移动网络时出现问题。
var transferRequest = new BackgroundTransferRequest(new Uri(url, UriKind.Absolute));
transferRequest.Tag = DateTime.Now.ToString(CultureInfo.InvariantCulture);
transferRequest.Method = "POST";
transferRequest.UploadLocation = new Uri(defect.VoiceRecordFileName, UriKind.Relative);
transferRequest.TransferPreferences = TransferPreferences.AllowCellularAndBattery;

transferRequest.Headers.Add("Content-Type", "audio/wav");

transferRequest.TransferStatusChanged += new EventHandler<BackgroundTransferEventArgs>(transferRequest_TransferStatusChanged);
transferRequest.TransferProgressChanged += new EventHandler<BackgroundTransferEventArgs>(transferRequest_TransferProgressChanged);

BackgroundTransferService.Add(transferRequest);

当我的TotalBytesSent达到512KB时,它停止上传。

我也检查了这个问题。

var tmp = NetworkInformation.GetInternetConnectionProfile();
var cost = tmp.GetConnectionCost();
var type = cost.NetworkCostType;

一切似乎都很好。

编辑:

服务器端的收入仅为380000字节 +/-5 KB。

有时,在10次失败的尝试后(只发送380KB等),它突然上传成功:D。有时候我不在办公室,第一次就能完美地工作,而另一次则永远无法发送它。

这是完全不可预测的事情。

解决方法:

问题出在服务器端...我有一个通用处理程序来保存这个文件,没有支持范围头(我想)。当我将我的项目更改为“Asp.NET Web Api项目”,受到教程的灵感/复制时。

昨天它没有起作用,但今天它意外地开始工作了:D 疯狂的诺基亚和.NET。

明天我们会看看接下来会发生什么。


你确定是0.5MB而不是5MB吗?因为5MB是通过蜂窝网络传输的限制。 - Kevin Gosse
是的,确切地说是0.5 MB。我知道有5 MB的限制,并且我已经调整了记录大小的限制。当我在调试时,在“transferRequest_TransferProgressChanged”中看到我在请求属性“request.BytesSent”中达到了最大的0.5MB,但我不明白为什么会这样 : )。明天我会尝试联系一些诺基亚或微软的技术专家来寻求帮助。 - lukasChudy
它的传输限制是50MB,而不是5MB,适用于蜂窝网络。 - Isaiyavan Babu Karan
您应该将您的 解决方案 发布为答案。回答并接受自己的解决方案是可以接受的。 - Joshua Drake
1个回答

0

正如IukasChudy所述,他的问题的解决方案是

问题出在服务器端...我有一个通用处理程序来保存这个文件,没有支持范围头(我想)。当我将我的项目更改为“Asp.NET Web Api Project”,受到了这个教程的启发/复制

昨天它不起作用,但今天它意外地开始工作了:D 疯狂的诺基亚和.NET。

明天我们会看看接下来会发生什么。

P.S. 我不喜欢用别人的内容来回答问题,但我讨厌已经解决的未回答的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接