我正在创建一个门户,许多站点将在其中运行相同的 MVC 应用程序。我有一个存储在 HttpRuntime.Cache 中的站点列表。通过静态方法访问缓存是错误的吗?我应该将其传递给视图数据吗?
例如,这在视图上是否错误:
SiteHelper 的代码在哪里:
public class SiteHelper {
private static object @lock = new object();
private const string siteKey = "FelixSites";
public static Site CurrentSite {
get {
var context = HttpContext.Current.Wrap();
var sites = context.Cache[siteKey] as Site[];
if (sites == null) {
lock (@lock) {
if (sites == null) {
sites = SiteService.GetSites();
context.Cache[siteKey] = sites;
}
}
}
return sites.Single(s => s.Domain == context.Request.UrlReferrer.AbsoluteUri);
}
}
}