private Tenant GetTenantBasedOnUrl(string urlHost) { if (String.IsNullOrEmpty(urlHost)) { throw new ApplicationException( "urlHost must be specified"); } Tenant tenant; string cacheName = "all-tenants-cache-name"; int cacheTimeOutSeconds = 2; // 2 seconds List <Tenant> tenants = new TCache <List <Tenant> >().Get( cacheName, cacheTimeOutSeconds, () => { List <Tenant> tenants1; using (var context = new MultiTenantContext()) { tenants1 = context.Tenants.ToList(); } return(tenants1); }); //List<Tenant> tenants = // (List<Tenant>) HttpContext.Current.Cache.Get(cacheName); //if (tenants == null) //{ // lock (Locker) // { // if (tenants == null) // { // using (var context = new MultiTenantContext()) // { // tenants = context.Tenants.ToList(); // HttpContext.Current.Cache.Insert(cacheName, tenants, null, // DateTime.Now.Add(new TimeSpan(0, 0, cacheTimeOutSeconds)), // TimeSpan.Zero); // } // } // } //} tenant = tenants. FirstOrDefault(a => a.DomainName.ToLower().Equals(urlHost)) ?? tenants.FirstOrDefault(a => a.Default); if (tenant == null) { throw new ApplicationException ("tenant not found based on URL, no default found"); } return(tenant); }
private Tenant GetTenantBasedOnUrl(string urlhost) { if (string.IsNullOrEmpty(urlhost)) { throw new ApplicationException("urlHost must be specified"); } Tenant tenant; object Locker = new object(); var cacheName = "all-tenants-cache-name"; var cacheTimeoutSeconds = 30; List <Tenant> tenants = new TCache <List <Tenant> >().Get(cacheName, cacheTimeoutSeconds, () => { List <Tenant> tenants1; using (var context = new MultiTenantContext()) { tenants1 = context.Tenants.ToList(); } return(tenants1); }); tenant = tenants.FirstOrDefault(a => a.DomainName.ToLower().Equals(urlhost)) ?? tenants.FirstOrDefault(a => a.Default); return(tenant); }
private Tenant GetTenantBasedOnUrl(string urlHost) { if (String.IsNullOrEmpty(urlHost)) { throw new ApplicationException("urlHost must be specified"); } Tenant tenant; string cacheName = "all-tenants-cache-name"; int cacheTimeOutSeconds = 30; List <Tenant> tenants = new TCache <List <Tenant> >().Get( cacheName, cacheTimeOutSeconds, () => { using (var context = new MultiTenantContext()) { return(context.Tenants.ToList()); } } ); tenant = tenants .FirstOrDefault(a => a.DomainName.Equals(urlHost, StringComparison.InvariantCultureIgnoreCase)) ?? tenants.FirstOrDefault(a => a.Default); if (tenant == null) { throw new ApplicationException("tenant not found based on URL, no default found"); } return(tenant); }