HttpClient不在登台服务器上使用缓存

时间:2014-03-13 10:32:41

标签: c# asp.net-mvc caching dotnet-httpclient

我在如下创建的MVC应用程序中使用了HttpClient:

new HttpClient(new WebRequestHandler()
{
    CachePolicy = new RequestCachePolicy(RequestCacheLevel.CacheIfAvailable)
});

我发出请求,并收到如下回复:

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Cache-Control: must-revalidate, max-age=3600
  Date: Thu, 13 Mar 2014 10:26:41 GMT
  Location: <snip!>/api/customers/TEST
  X-AspNet-Version: 4.0.30319
  Content-Length: 246
  Content-Type: application/json; charset=utf-8
  Expires: Thu, 13 Mar 2014 11:26:42 GMT
}

在我的本地它工作正常,但在登台服务器上调用相同的URL时服务仍然受到打击;缓存未被使用。

使用该服务的MVC站点在IIS7上托管,开发时我正在使用IIS Express。

为什么在我的本地计算机(缓存工作)和登台服务器(缓存不起作用)上运行它之间会有区别?如何修复它以便缓存在这两种情况下都有效?

1 个答案:

答案 0 :(得分:1)

我不是百分之百,但我相信,因为HttpClient使用WinInet代理进行缓存,所以当作为服务运行时它不起作用。即在IIS下。 有关详细信息,请参阅http://support.microsoft.com/kb/238425