【问题标题】:WebMethod CacheDuration - Avoid Caching Bad ResultsWebMethod CacheDuration - 避免缓存不良结果
【发布时间】:2014-10-13 17:27:33
【问题描述】:

如何避免使用带有 CacheDuration 属性的 ASP/ASMX WebMethod 缓存错误结果?

假设您有一个将两个数字相加的 WebMethod(因此它有两个数字参数)并且还有一个帐户 ID 参数。如果说帐户 ID 是过期帐户,则这 3 个参数的答案将是“错误:过期帐户”。如果你的缓存时长是 10 分钟,如果帐户在 1 分钟内得到修复,并且在 10 分钟到期期间再次调用该方法(使用相同的 3 个参数),它不会返回缓存的错误消息吗?

如果结果是错误消息,有没有办法避免缓存结果?

【问题讨论】:

  • 仅供参考,ASMX 是一项遗留技术,不应用于新开发。 WCF 或 ASP.NET Web API 应该用于 Web 服务客户端和服务器的所有新开发。一个提示:微软已经在 MSDN 上停用了ASMX Forum
  • 是的,很清楚。别在意。我不喜欢 WCF。
  • 您在 .NET 4.5 中尝试过 WCF 吗?使用起来要简单得多。而且,顺便说一句,微软甚至没有修复 ASMX 中的错误。
  • 天哪,让 WCF 十字军东征结束吧。我没有使用它。
  • 嘿,这取决于你。大多数人喜欢供应商修复错误。微软没有为 ASMX 做的事情。

标签: asp.net web-services caching asmx


【解决方案1】:

您可以在 webmethod 中自己进行缓存,而不是依赖 CacheDuration 属性。在这种情况下,您将拥有完全的控制权。

您可以根据输入参数创建唯一的缓存键,如果没有错误,则将结果存储在缓存中(特定持续时间)。

所以当出现错误时,意味着没有缓存,所以你会再次检查帐户是否有效。如果帐户有效,则将结果放入缓存中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2018-12-06
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    相关资源
    最近更新 更多