0

当与我们的REST web服务进行通信时,将返回一个状态码为304的http响应,以指示所请求的资源未发生更改。然而,我们的WP7应用程序使用HttpWebRequest类,手机在这种类型的响应被成功读取之前需要2分钟。HttpWebRequest定时响应状态码304

HttpWebRequest request = HttpWebRequest.Create("path/to/unchanged/resource") as HttpWebRequest; 
    request.Method = "GET"; 
    request.BeginGetResponse(
     new AsyncCallback(
      (aysncResult) => { 
       // response is read correctly here... 120 seconds later 
      }), null); 

我可以看到,web服务与304个没有主体数据立即响应,该请求本身不定时出和我们的应用程序能够成功地处理其他响应码[404,201等]。它可能是Silverlight浏览器“缓存”问题吗?

任何人都可以确认他们以前见过这个,或者对这个问题有任何想法吗?

干杯, 阿拉斯代尔。

==更多信息==

由于WP7 restricting某些request headers因此,我们使用自定义[IF-Modified-Since的]标题为我们所有的资源请求。这个自定义标题[X-If-Modified-Since]被webservice前面的防火墙识别并修改回标准头。我不确定这是否与上述问题有关。

回答

0

回答我自己的问题,以防万一有人感兴趣或面临类似问题。

我们最终通过配置我们的网络服务来与OK(200)HTTP状态代码响应,在自定义头X-HTTP-状态编写实际的响应代码创建一个变通。在客户端解析响应时,如果此自定义标头存在,则我们将此作为实际状态代码,并从那里继续执行业务逻辑。

这使我们有可能处理Windows Phone处理不同的任何其他状态代码。

问题的原因仍然未知,尽管我们强烈怀疑由于这是一个NOT MODIFIED(304)代码,所以在响应提供给我们之前,Silverlight中的某些低级别层会发生一些缓存。