我正在使用最近launched tiny webapp上的LINQ2SQL的ASP.NET Preview 5(将很快升级到Beta版)。
我为自己的工作感到非常自豪,直到Silverlight.net在第一页上展示它并且它开始接收的访问者数量不多。
出于某种原因,用户有时会得到LINQ2SQL抛出的“Specified cast invalid” - 这是因为未经身份验证的用户被视为“Guest”用户,而Controller正在为每个命中加载有关用户“Guest”的信息
在第一页中,顶部有一个“欢迎[USERNAME]”,可以使用Donut Caching轻松缓存。
但是,在中间,有一个“什么是Dudlers.com”块,只应向未经身份验证的用户显示,另一个“关于你”块只应向经过身份验证的用户显示。这些块太复杂了,无法使用Donut Caching缓存;它们太不同了,它会非常混乱。
我想根据用户的身份验证状态缓存第一个。因此,未经身份验证的用户(不用说,大多数)会获得“访客”缓存页面,而其他经过身份验证的用户会显示一个新的非缓存页面。
是否可以选择通过身份验证指定缓存?就像是: [OutputCache(VaryBy = Authentication)]
还是有另一种非ASPP.NET MVC解决方案吗? (也许调整MS SQL)
我希望我的问题很明确。 我在同一台专用服务器上运行Windows 2003和MS SQL 2005 Express。
谢谢!
答案 0 :(得分:12)
您不必使用甜甜圈缓存机制。 ASP.NET具有VaryByCustom
选项,允许您确定如何更改缓存。
查看此信息以获取更多信息:http://aspadvice.com/blogs/ssmith/archive/2007/10/29/VaryByCustom-Caching-By-User.aspx
适用于ASP.NET MVC。