加入收藏 | 设为首页 | 会员中心 | 我要投稿 百色站长网 (https://www.0776zz.com/)- 专属主机、云硬盘、智能边缘云、云计算、5G!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在我的ASP.NET MVC网站中缓存不能正常工作?

发布时间:2021-02-21 12:39:28 所属栏目:asp.Net 来源:互联网
导读:我正在尝试在我的ASP.NET MVC网站中使用OutputCaching.问题是,当我尝试更改一个我的查询字符串参数的值时,它将返回所请求的第一个项目的数据! 这是我的代码(改变了param名称)…… [ApiAuthorize][HandleErrorAsJson]public class SearchController : Control

我正在尝试在我的ASP.NET MVC网站中使用OutputCaching.问题是,当我尝试更改一个我的查询字符串参数的值时,它将返回所请求的第一个项目的数据!

这是我的代码(改变了param名称)……

[ApiAuthorize]
[HandleErrorAsJson]
public class SearchController : Controller
{
    [AcceptVerbs(HttpVerbs.Get)]
    [OutputCache(Duration = 60,VaryByParam = "*")]
    public ActionResult ScoreCard(string foo,byte? bar,byte? pewpew)
    {
    ..
    }
}

>注1:ApiAuthorize – 自定义属性,用于检查名为“Key”的查询字符串参数,并检查内存字典,以查看它是否存在.
>注2:HandleErrorAsJson – 自定义属性,如果抛出异常,则返回错误消息为json.

这是我正在做这个动作的两个示例调用: –

> / GET http://api.MySite.com/search/scorecard?foo=hello+world,+PewPew&key=abcd1234&bar=2
> / GET http://api.MySite.com/search/scorecard?foo=invalid+search+stuff&key=abcd1234&bar=2

所以第一次调用的数据(foo = hello world,Pew Pew)返回200 OK.
然后第二个api调用返回200 OK但使用前一个调用的数据.

此外,我没有使用任何代理服务器.
如果我注释掉OutputCache属性,一切都很好.

我也尝试了以下(每次我需要缓存时手动列出)…..

[OutputCache(Duration = 60,VaryByParam = "foo,key,bar,pewpew")]

没运气 :(

请注意我需要确保将“Key”参数作为缓存唯一键的一部分包含在内.我不希望人们搜索相同的东西,但如果第二个人没有正确的密钥,他们不应该得到缓存的结果,而是一个错误信息(技术上,它是401未授权,但无论如何)…

思考?

解决方法

VaryByParam中的参数列表应该是以分号分隔的,而不是逗号分隔的.试一试.那就是说,*应该有效.

(编辑:百色站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读