Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }