Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8 HttpClient Portable返回404在WP8上找不到_Windows Phone 8_Portable Class Library_Dotnet Httpclient - Fatal编程技术网

Windows phone 8 HttpClient Portable返回404在WP8上找不到

Windows phone 8 HttpClient Portable返回404在WP8上找不到,windows-phone-8,portable-class-library,dotnet-httpclient,Windows Phone 8,Portable Class Library,Dotnet Httpclient,我正在移植一个W8应用程序,它使用httpclient库连接到我们的服务器 该应用程序的主要目的是发送图像,但当我尝试在我的WP8上发送图像时,我得到了一个404未找到的错误,似乎Microsoft重新映射到404有很多错误,如果我检查服务器日志,我可以看到服务器在故障前接收了大约1/4的图像。在我的W8应用程序中,同样的功能似乎可以正常工作。我的W8应用程序没有在3G上测试,如果我使用Wifi连接,它可以在WP8上工作。我认为问题可能在于等待时间,所以我尝试添加Keep-Alive标题,但没有

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

该应用程序的主要目的是发送图像,但当我尝试在我的WP8上发送图像时,我得到了一个404未找到的错误,似乎Microsoft重新映射到404有很多错误,如果我检查服务器日志,我可以看到服务器在故障前接收了大约1/4的图像。在我的W8应用程序中,同样的功能似乎可以正常工作。我的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)上上传图片,没有问题。

我使用fiddler模拟调制解调器速度重现了这个问题。这个问题之所以会发生,是因为手机的HTTPWebRequest实现会在请求超过60秒时超时。在调试器中,我看到他们从本机层返回错误\u INTERNET\u超时。目前我能想到的唯一解决办法是,假设服务器支持,以较小的方式发送文件。

您是否尝试捕获网络跟踪?@TheESJ我尝试使用Wireshark,我可以看到服务器开始接收流,但突然停止接收信息。经过多次重试,我可以发送一张图片,可能需要20-30次重试。是否可以共享完整的复制代码?对不起,我的公司不允许我共享代码。但是我认为你可以用低连接速度2G发送大约1.4mb的数据流来重现这个问题。我做了一个小项目,你可以检查这个问题,将网络设置为2G模式很重要。您只需将sync类中的sUri更改为任何能够接收大型post呼叫的url。谢谢@TheESJ的帮助,我已经实施了图片分割以避免此问题。在我的倍数Trayi中,我做了一个C++组件,但结果相同,所以网络实现似乎有问题。