我们有一个建立在 SQL Server 之上的服务。该服务作为 Windows 服务运行。我创建了一个 dll 文件,我可以在我的ASP.net
项目中使用它来与该服务对话以获取数据。
如果我在控制台应用程序中使用 dll 文件,我总是会得到新的结果。但是,如果我在“ASP.net”项目中使用 dll,我会得到以下函数调用的缓存结果。
[HttpGet]
public JsonResult GetTreeData()
{
IRemediationService svc = new RemediationService();
var tree = svc.GetTreeData();
return Json(tree, JsonRequestBehavior.AllowGet);
}
我认为客户端浏览器正在缓存结果,但我在调试模式下运行应用程序,到达GetTreeData
函数调用并检查结果以查看它具有旧值,因此浏览器没有缓存任何内容。
以下是在 Google chrome 中针对此请求发送到 IIS 的标头。
Cache-Control:no-cache
Connection:keep-alive
Host:localhost:64387
Pragma:no-cache
响应头是
Cache-Control:private
Content-Length:111578
Content-Type:application/json; charset=utf-8
Date:Fri, 13 Sep 2013 15:18:59 GMT
Persistent-Auth:true
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:4.0
X-Powered-By:ASP.NET
您可能认为后端正在缓存结果,但控制台应用程序始终获取后端 SQL 服务器上的任何内容。这是我使用的代码。如果我在调试模式下运行控制台应用程序并查看此函数调用的结果,它始终是最新的。
static void Main(string[] args)
{
IRemediationService svc = new RemediationService();
var tree = svc.GetTreeData();
}
请帮助,这样 IIS 将始终查询结果,而不是用其内存缓存中的内容进行回复。