WebMethod中的CacheDuration被忽略

时间:2011-09-09 12:26:23

标签: c# web-services caching webmethod

我尝试缓存网络服务的 webmethod 。通过遵循文档,我尝试添加CacheDuration属性,并进行了测试:

[WebMethod(CacheDuration = 180)]
public int TestCacheDuration()
{           
   return new Random().Next();
}

对于webmethod的每次调用,我都有不同的响应,因此不会被缓存。

这是正常的吗?

感谢您的回答!

1 个答案:

答案 0 :(得分:3)

MSDN论坛中明确解释了这一点:

  

有两个问题会影响ASP.NET 2.0中的输出缓存   Web服务应用程序。

     

在ASP.NET 2.0中,测试页的HTTP方法已从GET更改   发布。但是,POST通常不会被缓存。如果你改变了   ASP.NET 2.0 Web服务应用程序中的测试页面使用GET,   缓存工作正常。

     

此外,HTTP表示用户代理(浏览器或呼叫)   应用程序)应该能够通过设置来覆盖服务器缓存   “缓存控制”到“无缓存”。因此,ASP.NET应用程序会忽略   当他们找到“无缓存”标题时缓存结果。

还有:

  

使用web.config中的webSerices元素下的protocols元素:

     

http://msdn2.microsoft.com/en-us/library/ms228319(VS.85).aspx

来源:http://social.msdn.microsoft.com/forums/en-US/asmxandxml/thread/3765f1e2-0ff5-4840-afa2-e85b3d909cd1