我们有一个建立在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
函数调用并检查结果以查看它具有旧值,因此浏览器不缓存任何内容。 / p>
以下是发送到IIS的标头,在Google Chrome中为此请求找到它。
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始终查询结果,而不是回复其内存缓存中的内容。