Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
  • Apr 28 11:46
    win32nipuh opened #105
  • Feb 27 20:48
    anthrax3 opened #104
  • Apr 15 2019 02:16
    project-orcon commented #96
  • Apr 08 2019 06:23
    MuratGOZCU closed #103
  • Apr 07 2019 21:13
    Marcel0024 commented #103
  • Jan 21 2019 07:26
    MuratGOZCU opened #103
  • Jan 21 2019 07:19
    MuratGOZCU closed #102
  • Jan 19 2019 22:48
    aldari closed #92
  • Jan 17 2019 04:22
    aceptra closed #53
  • Dec 12 2018 13:24
    MuratGOZCU edited #102
  • Dec 12 2018 13:24
    MuratGOZCU opened #102
  • Dec 05 2018 13:23
    chernihiv commented #96
  • Nov 07 2018 14:14
    flauberjp commented #96
  • Sep 18 2018 16:33
    grayniall commented #96
  • Aug 10 2018 18:46
    ani2479 opened #101
  • Jul 23 2018 16:24
    whizkidwwe1217 commented #88
  • Jul 17 2018 10:31
    whizkidwwe1217 opened #100
  • Jun 29 2018 07:53
    ovidiaconescu commented #96
  • May 21 2018 18:12
    TomBeckett commented #96
  • May 15 2018 20:47
    TomBeckett commented #96
John Nyingi
I have the same question @mebymyself has if anyone has a link to the solution please provide
i have a requirement mulitple clients login independently with same login credentials for different clients(websites) . Is this possible with identity server 4?
Edwardenis De los santos
This Awasome Library is for .net core so I cannot used. Do you know an alternative to implement on MVC 5 App?
Ben Meredith
@Edwardenis The 0.0.2-pre version of SaasKit uses full framework (MVC 5/WebApi 2) instead of .net core.
Alan Leite de Rezende

Good morning guys!
I need to implement the filters in my services to get the data of the tenance you are requesting.
Given this scenario, will I have to inject the tenance resolver into my service and do a where in all methods manually, or is there any native saaskit implementation that solves this?

Example Today:
var accounts = _accountAppService.GetAsync (). Where (x => x.tenantId == _tenantResolver.Id)

Master Whiz
@alanrezendee You should inject the TenantContext that holds the Tenant object instead of injecting the tenant resolver
@sulmar Where you able to create this function 'WithPerTenantOptionsConfig' or something similar?
Is this channel still active ?
Márton Balassa
Hi, is this project active in any way? I like the idea and I have some of my own to contribute.
Reagan Chu
I'm trying to dding tenant-specific files with SaasKit in ASP.NET Core

and can't find any working example for core 2.0
this was the old code for core 1.0

var routeBuilder = new RouteBuilder(app);
var routeTemplate = "tenant/{*filePath}";
routeBuilder.MapRoute(routeTemplate, (IApplicationBuilder fork) =>
//Add middleware to rewrite our path for tenant specific files
var router = routeBuilder.Build();

but core 2.0 no longer use this. is there anyone with example on how to get this to work

Joe Audette
@presiden999_twitter I would avoid rewriting and instead if tenant routes need a folder segment in the url use a routecontstraint, that is what we do in cloudscribe, we do use sasskit to resolve the tenant per request and we use it to branch static files middleware per tenant, but most other middleware is singleton and can't be branched in 2.0 and higher.
Master Whiz
Hi, has anyone used SaasKit in ASP.NET Core 3.0?
hi has anyone done any multitenancy handling events, eg event property sets tenant ?
Does saaskit use websockets?
Sanchit Chawla
I am using SAAS Kit and loading tenant information from an external data source, I am planning to implement CachingAppTenantResolver to avoid calling database on every request. But just wanted to check how would i invalidate the cache if tenant is updated/deleted
this project seems semi-dead. anything better, or at least maintained, out there? I know of cloudscribe from above.
Jeremy Cook
@whizkidwwe1217 I just created a project ASP.NET Core 3.0 project and used it by following the tutorial. It worked fine.
Master Whiz

@jeremycook Yes, it works in 3.0 but you can't override the default dependencies per tenant ( In ASP.NET Core 3.0, the way you override ConfigureServices is different. The SaasKit.Multitenancy.StructureMap extension doesn't work in 3.0 anymore. Seems like Microsoft removed the feature (aspnet/AspNetCore#5949).

In 2.2, you can override the ConfigureServices and configure the dependencies per tenant as shown in the code below:

public IServiceProvider ConfigureServices(IServiceCollection services)
          var container = new Container();
          container.ConfigureTenants<AppTenant>((tenant, config) =>
                    if (tenant.Db == 'MSSQL')
          return container.GetInstance<IServiceProvider>();
I hope someone can migrate it to 3.0. That would be a big help.
I'm using that feature and it prevents me from updating to ASP.NET Core 3.0.
Jeremy Cook
@whizkidwwe1217 I've used AddScoped and AddTransient to achieve about the same result, and not worried about the lack of a "tenant" scope. For example:
services.AddScoped<IRepository>(serviceProvider => {
    var tenant = serviceProvider.GetRequiredService<AppTenant>();
    if (tenant.Db == "MSSQL")
        return serviceProvider.GetRequiredService<MsSqlRepository>();
        return serviceProvider.GetRequiredService<MySqlRepository>();
Paul Czywczynski
@slacker-king Might checkout this:
Struggling to find a solution mentioned here though I note somebody else mentioned a similar problem. I am in the process of migrating dotnetcore from 1.0 through all iterations to 3.1. SaasKit app.UsePerTenant<AppTenant>((ctx, builder) => needs moving to services.addmultitenancy - but I can not find any examples. I'm focused mainly on the cookie based authentication as shown here:
@asest I have tried saaskit but it seems it died. I use the, it is live project, the author develops it and react on issues.