Handling missing tenants in ASP.NET Core

My last post about multi-tenants applications with ASP.NET Core Implementing database per tenant strategy on ASP.NET Core I proposed some ideas about tenant providers but I didn’t focused on issues related to missing tenants. This post proposes missing tenant middleware that redirects faulty requests to some public page of company web site.

Ideas for handling missing tenants

I expect here that tenants are served by ASP.NET Core web application that works always in context of some tenant. I mean there will be no public content pages with sales or marketing materials and so on. The web application needs some tenant to be available. But what happens when tenant is not found by host header?

One approach is to throw an exception but this is hardly an option with commercial service. Redirect to some public page would be better but making redirects in controllers means duplicated code. It’s possible to build some TenantRequired attribute but I don’t like this idea either.

Building missing tenant middleware

As a working solution I see custom middleware that is added to request processing pipeline. This middleware takes redirect URL as argument and checks if tenant is detected or not. If there’s no tenant available it redirects request to redirect URL.

public class MissingTenantMiddleware
{
    private readonly RequestDelegate _next;
    private readonly string _missingTenantUrl;

    public MissingTenantMiddleware(RequestDelegate next, string missingTenantUrl)
    {
        _next = next;
        _missingTenantUrl = missingTenantUrl;
    }

    public async Task Invoke(HttpContext httpContext, ITenantProvider provider)
    {
        if(provider.GetTenant() == null)
        {
            httpContext.Response.Redirect(_missingTenantUrl);
            return;
        }

        await _next.Invoke(httpContext);
    }
}

Notice how redirect URL is given to middleware through constructor injection and tenant provider is argument of Invoke() method call. It was the minimal I was able to achieve without tricking in Startup class of application.

Adding missing tenant middleware to request pipeline

Middleware must be registered during application start-up. Here is the fragment of Configure() method of Startup class.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // ...

    app.UseMiddleware<MissingTenantMiddleware>(Configuration["MissingTenantUrl"]);

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

Although the case of missing tenant is now handled in middleware it doesn’t mean that other classes that expect existence of current tenant should not control if tenant is available or not.

Wrapping up

Without any hacking but leaning to ASP.NET Core features it is possible to handle many unexpected situations in web applications. This blog post focused on multi-tenant applications and a situation where request is made but tenant is not found. Using custom middleware it was possible to build missing tenant middleware that redirects those requests to some public page given in application settings. All the logic is located in missing tenant middleware and no other parts of web application have to take care about redirects in case of missing tenant.

Gunnar Peipman

Gunnar Peipman is ASP.NET, Azure and SharePoint fan, Estonian Microsoft user group leader, blogger, conference speaker, teacher, and tech maniac. Since 2008 he is Microsoft MVP specialized on ASP.NET.

    19 thoughts on “Handling missing tenants in ASP.NET Core

    • September 24, 2018 at 12:36 pm
      Permalink

      I tried to redirect the page to the home page of the same site. Then I’m getting the error too many redirects (Infinite redirects.
      httpContext.Response.Redirect(_missingTenantUrl);

      Any solution to handle this?

    • January 15, 2020 at 11:40 am
      Permalink

      It’s not working , I’m getting the error too many redirects.

    • January 18, 2020 at 1:13 pm
      Permalink

      Too many redirects comes from the fact that you are trying to redirect user to some page of multi-tenant application and this page is not part of any tenant. Same time web application expects there to be active tenant. It can’t find it and redirects user again to _missingTenantUrl.

      In practice, multi-tenant application is one thing and homepage of service provider is another thing. So, _missingTenantUrl should redirect user to landing page that is part of company’s homepage.

      It’s possible to update missing tenant provider the way that it ignores request to _missingTenantUrl. In this case you must be sure that controller action for this URL doesn’t need any multi-tenant features. Otherwise you will get NullReferenceExceptions and other annoyiances.

    • April 5, 2025 at 8:03 am
      Permalink

      Heya i’m for the first time here. I came across this
      board and I find It truly useful & it helped me out a lot.
      I hope to give something back and help others like you helped me.

    • April 18, 2025 at 8:41 pm
      Permalink

      Magnificent goods from you, man. I’ve understand your stuff previous to
      and you’re just too fantastic. I actually like what you have acquired here, really like what you
      are stating and the way in which you say it. You make it entertaining and you still care for to
      keep it smart. I can not wait to read much more from you.
      This is really a terrific website.

    • April 19, 2025 at 11:37 am
      Permalink

      Hi there, You have done a fantastic job. I will definitely digg
      it and personally recommend to my friends. I am sure they will be benefited from this web site.

      Feel free to surf to my page :: what is in purdentix

    • April 28, 2025 at 12:43 pm
      Permalink

      Very great post. I simply stumbled upon your blog and wanted to mention that
      I have truly enjoyed surfing around your weblog posts.

      In any case I’ll be subscribing on your feed and I’m hoping you write again very soon!

    • May 12, 2025 at 1:24 am
      Permalink

      link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi

    • May 16, 2025 at 6:04 am
      Permalink

      link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi

    • May 21, 2025 at 7:52 pm
      Permalink

      link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi

    • May 22, 2025 at 3:06 am
      Permalink

      link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink
      porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link
      porno grafilink porno grafilink porno grafi link porno
      grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno
      grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink
      porno grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno
      grafi link porno grafilink porno grafilink porno grafi link porno grafilink porno grafilink porno grafi
      link porno grafilink porno grafilink porno grafi

    • May 22, 2025 at 3:33 pm
      Permalink

      Hey would you mind letting me know which hosting company you’re working with?
      I’ve loaded your blog in 3 completely different browsers and I must say this blog loads a lot faster then most.
      Can you suggest a good internet hosting provider at a reasonable price?

      Many thanks, I appreciate it!

    • May 30, 2025 at 11:15 pm
      Permalink

      When someone writes an post he/she keeps the plan of a user in his/her brain that how a user can be aware of it.

      Therefore that’s why this article is great. Thanks!

    • June 8, 2025 at 3:10 am
      Permalink

      situs kontol situs kontol situs kontol situs kontol situs kontol situs kontol situs kontol situs kontol situs kontol situs kontol
      situs kontol situs kontol situs kontol situs kontol

    • June 11, 2025 at 12:44 pm
      Permalink

      Wow, wonderful weblog structure! How long have you ever been blogging for?
      you make running a blog glance easy. The full
      glance of your website is fantastic, as well as
      the content!

    • June 12, 2025 at 10:08 am
      Permalink

      Wonderful work! That is the kind of info that are meant
      to be shared across the net. Shame on Google for no longer positioning this submit upper!
      Come on over and seek advice from my web site . Thanks =)

    • June 15, 2025 at 8:23 am
      Permalink

      For latest information you have to visit world-wide-web and on world-wide-web I found this web page as a
      most excellent site for hottest updates.

    Leave a Reply

    Your email address will not be published. Required fields are marked *