2008-11-14 70 views
13

我在最近的launched tiny webapp上使用LINQ2SQL的ASP.NET Preview 5(即将升级到测试版)。ASP.NET MVC缓存因身份验证而异

我很为我的工作感到骄傲,直到Silverlight.net将它放在第一页上,并且它开始接收的访客数量不多。

由于某些原因,用户有时会得到LINQ2SQL引发的“指定的强制转换无效” - 这是因为未经身份验证的用户被视为“访客”用户,而且控制器正在为每个用户加载关于用户“访客”的信息击中。

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

但是,在中间下方有一个“什么是Dudlers.com”块,它只应显示给未经验证的用户,另一个“关于您”块应只显示给经过验证的用户。这些块太复杂,无法使用甜甜圈缓存进行缓存;它们太不一样了,它会非常混乱。

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

是否有一个选项指定不同的身份验证缓存?如: [OutputCache(VaryBy = Authentication)]

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

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

谢谢!

+0

您是否设法让甜甜圈缓存并运行? – 2008-12-24 10:21:30

回答