Excel的VBA REST WCF适用于第一个呼叫,但后续调用返回缓存(非流动)数据(Excel-

2019-10-17 01:33发布

我在下面的表格基本WCF客户服务。 第一次被调用时,它返回从远程服务器正确的数据。 然而,数据经常变化。 在随后的调用,它返回它没有在第一次调用相同的数据。 因此,Excel似乎返回缓存数据。
如果我运行从小提琴手或浏览器相同的WCF程序,它似乎总是返回电流/刷新的数据(所以我认为这个问题是在Excel中,而不是服务器)。 我怎么能强制Excel VBA“刷新”的称呼,而不是从缓存中获取数据? 注意:这将分发到各种最终用户的,所以我不能让客户端配置的变化。

Public Function CallWCF() As String
   Dim HttpReq As Object
   Set HttpReq = CreateObject("MSXML2.XMLHTTP")
   HttpReq.Open "GET", "http://ws.mydomain.com/Rest.svc/getmydata"
   Call HttpReq.Send
   Do While HttpReq.readyState <> 4
     DoEvents
   Loop
   Dim resp As String
   resp = HttpReq.ResponseText
   CallWCF = resp
   Set HttpReq = Nothing
End Function

Answer 1:

从stackoverflow.com/q/11526810/190829 ,似乎增加: httpReq.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"解决了我的电脑上的问题(不知道这是否会工作在不同的浏览器所有PC)。 其他2: HttpReq.setRequestHeader "Cache-Control", "no-cache"HttpReq.setRequestHeader "Pragma", "no-cache"似乎并没有帮助。

我还试图与追加改变每个请求(如时间或随机数),并且也适用伪参数的URL。 不过,我认为这将需要改变服务器的代码为我所有的操作。



Answer 2:

我也有类似的问题,调用与获取资源并且具有缓存的响应。 (这不是支持或其他任何东西),然后调用方式,我解决它调用“PUT”你有用的“GET” - 这样它会迫使一个新的连接,在长期切断持久性。



文章来源: Excel-VBA REST WCF works on 1st call, but subsequent calls return cached (non-current) data