与我们的 REST Web 服务通信时,返回状态码为 304 的 http 响应,表示请求的资源没有更改。然而,我们的 WP7 应用程序使用HttpWebRequest类,手机在成功读取此类响应之前需要 2 分钟。
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 限制了某些请求标头,我们对所有资源请求使用自定义的 [If-Modified-Since] 标头。此自定义标头 [X-If-Modified-Since] 被 web 服务前的防火墙识别并修改回标准标头。我不确定这是否与上述问题有关。