1

我有一个控制台应用程序,它需要动态加载我的 API 应用程序中的所有端点并获取缓存数据的详细信息。

    foreach (var routeTemplate in listRouteTempplates)
    {
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/appName/" + routeTemplate );
                    WebResponse response = null;
                    Stream dataStream = null;
                    request.Method = HttpMethod.Get.ToString();

                    response = request.GetResponse();
                    dataStream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(dataStream);
                    responseFromServer = reader.ReadToEnd();
                    reader.Close();
                    dataStream.Close();
                    response.Close();

                    var count=HttpRuntime.Cache.Count;
    }

调用每个端点时,检索到的数据也会被缓存。我通过直接(通过邮递员)调用端点并检查缓存来确认这一点。

但是在控制台应用程序中,即使响应确实包含正确的数据,HttpRuntime.Cache 中的项目计数始终为零。

当我在控制台应用程序中调用端点时,数据没有被缓存是否有原因?

谢谢

4

1 回答 1

4

存储项目的缓存位于 Web API 主机内的服务器上。然后,您在客户端控制台应用程序中检查的缓存实例中没有任何项目是正常的 - 这些是生活在 2 个不同应用程序中的 2 个完全不同的对象实例。

于 2016-08-22T15:22:54.260 回答