/// <summary> /// Resolves the tenant using the Base Path Strategy (i.e. the first path segment). /// </summary> /// <returns>Returns the resolved <see cref="ITenantContext"/> if a tenant was resolved, otherwise <see langword="null"/>.</returns> public ITenantContext Resolve() { if (_httpContext == null) { return(_tenantStore.GetDefaultTenant() ?? throw new Exception("HttpContext is null and no default ITenantContext found.")); } var request = _httpContext.Request; // used if site is identified by host name (and port) var host = request.Host.ToString(); // first segment: / // second segment: organization/ // third segment: account/ var uri = new Uri(request.GetDisplayUrl()); // used if site is identified by the first segment of the URI var urlSegmentValue = uri.Segments.Length > 1 ? uri.Segments[1].TrimEnd('/') : string.Empty; var tenant = _tenantStore.GetTenantByUrlSegment(urlSegmentValue); if (tenant != null) { SetMostRecentTenantCookie(tenant); return(tenant); } return(_tenantStore.GetDefaultTenant()); }
public void GetDefaultTenant_Test() { Assert.DoesNotThrow(() => _ = _store.LoadTenants()); var tenant = _store.GetDefaultTenant(); Assert.AreEqual("DefaultTenant", tenant?.Identifier); }