IIS使用缓存结果进行回复,但控制台应用程序却没有

时间:2013-09-13 16:22:55

标签: asp.net iis

我们有一个建立在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始终查询结果,而不是回复其内存缓存中的内容。

0 个答案:

没有答案