多くのサイトが同じ 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);
}
}
}