代码之家  ›  专栏  ›  技术社区  ›  ANaimi

ASP.NET MVC缓存因身份验证而异

  •  13
  • ANaimi  · 技术社区  · 16 年前

    我最近用的是linq2sql的ASP.NET预览版5(即将升级到beta版) launched tiny webapp .

    我为我的工作感到骄傲,直到Silverlight.net在第一页上展示了它,它开始接收到数量不多的访问者。

    出于某种原因,用户有时会收到linq2sql抛出的“指定的强制转换无效”—这是因为未经身份验证的用户被当作“来宾”用户处理,并且控制器正在为每次命中加载有关用户“来宾”的信息。

    在第一页中,顶部有一个“welcome[username]”,可以使用 Donut Caching .

    但是,在中间有一个“what is dudlers.com”块,只应向未经身份验证的用户显示,另一个“about you”块只应向经过身份验证的用户显示。这些块太复杂,无法使用甜甜圈缓存进行缓存;它们太不同了,会非常混乱。

    我想根据用户的身份验证状态缓存第一个。因此,未经身份验证的用户(不用说,大多数)会得到“来宾”缓存页,而其他经过身份验证的用户则会显示一个新的非缓存页。

    是否有一个指定缓存的选项因身份验证而异?类似: [输出缓存(varyby=身份验证)]

    还是有其他非ASP.NET MVC解决方案?(可能调整MS SQL)

    我希望我的问题是清楚的。 我在同一台专用服务器上运行Windows 2003和MS SQL 2005 Express。

    谢谢您!

    1 回复  |  直到 16 年前
        1
  •  12
  •   Ben Scheirman    16 年前

    您不必使用甜甜圈缓存机制。ASP.NET有 VaryByCustom 选项,它允许您确定如何更改缓存。

    有关详细信息,请查看此项: http://aspadvice.com/blogs/ssmith/archive/2007/10/29/VaryByCustom-Caching-By-User.aspx

    对于ASP.NET MVC应该可以正常工作。