在控制台应用程序中访问 HttpRUntime.Cache
Accessing HttpRUntime.Cache in console app
我有一个控制台应用程序需要在我的 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 中的项目计数始终为零。
当我在控制台应用程序中调用端点时,是否存在未缓存数据的原因?
谢谢
存储项目的缓存位于 Web API 主机内的服务器上。然后,您在客户端控制台应用程序中检查的缓存实例中没有任何项目是正常的 - 它们是 2 个完全不同的对象实例,存在于 2 个不同的应用程序中。
我有一个控制台应用程序需要在我的 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 中的项目计数始终为零。
当我在控制台应用程序中调用端点时,是否存在未缓存数据的原因?
谢谢
存储项目的缓存位于 Web API 主机内的服务器上。然后,您在客户端控制台应用程序中检查的缓存实例中没有任何项目是正常的 - 它们是 2 个完全不同的对象实例,存在于 2 个不同的应用程序中。