1

我正在移植一个使用 httpclient 库连接到我们的服务器的 W8 应用程序。

该应用程序的主要目的是发送图像,但是当我尝试在我的 WP8 上发送图片时出现 404 not found 错误(似乎微软将很多错误重新映射到 404),如果我检查服务器日志,我可以看到服务器在失败之前收到了大约 1/4 的图像。同样的功能似乎在我的 W8 应用程序中运行良好(未在 3G 上测试),如果我使用 Wifi 连接,则在 WP8 上运行。我认为问题可能是等待时间,所以我尝试添加 Keep-Alive 标头但没有成功。我目前的代码是:

using (HttpClient httpClient = new HttpClient())
{
    httpClient.Timeout = TimeSpan.FromMinutes(10);

    Stream streamW = new MemoryStream();
    this.bSyncOK = await Send(streamW);
    streamW.Seek(0, SeekOrigin.Begin);
    HttpResponseMessage response = await httpClient.PostAsync(sUri, new StreamContent(streamW));

    if (response.IsSuccessStatusCode)
    {
        Stream streamR = await response.Content.ReadAsStreamAsync();
        this.bSyncOK = await Recv(streamR);
        streamR.Dispose();
    }
    else
        throw new HostNotFoundException();
}

同一台服务器用于在IOS和Android等其他平台上传图片没有问题。

4

1 回答 1

0

我使用提琴手模拟调制解调器速度重现了这个问题。问题正在发生,因为 Phone 的 HTTPWebRequest 实现将在超过 60 秒时使请求超时。在调试器中,我看到他们从本机层返回 ERROR_INTERNET_TIMEOUT。假设服务器支持,我目前能想到的唯一解决方法是以较小的 POST 发送文件。

于 2013-06-20T08:12:06.167 回答