【问题标题】:ASP.NET MVC Caching vary by authenticationASP.NET MVC 缓存因身份验证而异
【发布时间】:2010-09-22 08:25:08
【问题描述】:

我在我最近的launched tiny webapp 上使用带有 LINQ2SQL 的 ASP.NET Preview 5(即将升级到 Beta)。

我为自己的工作感到非常自豪,直到 Silverlight.net 在首页上展示了它,并且它开始接收到数量不多的访问者。

出于某种原因,用户有时会收到 LINQ2SQL 抛出的“指定的强制转换无效”——这是因为未经身份验证的用户被视为“访客”用户,并且控制器正在为每次点击加载有关用户“访客”的信息.

在首页顶部有一个“Welcome [USERNAME]”,可以使用Donut Caching轻松缓存。

但是,在中间,有一个“什么是 Dudlers.com”块,应该只向未经身份验证的用户显示,另一个“关于你”块应该只向经过身份验证的用户显示。这些块太复杂了,无法使用 Donut Caching 进行缓存;它们太不一样了,会很乱。

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

是否有一个选项可以指定因身份验证而异的缓存?就像是: [OutputCache(VaryBy = Authentication)]

或者还有其他非 ASP.NET MVC 解决方案吗? (也许调整 MS SQL)

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

谢谢!

【问题讨论】:

  • 您是否设法让甜甜圈缓存启动并运行?

标签: sql-server asp.net-mvc linq-to-sql caching


【解决方案1】:

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

查看更多信息:http://aspadvice.com/blogs/ssmith/archive/2007/10/29/VaryByCustom-Caching-By-User.aspx

应该适用于 ASP.NET MVC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2014-05-03
    相关资源
    最近更新 更多