Share via

Kestrel vs. IISExpress

Rod Falanga 1,036 Reputation points
2026-03-07T15:00:44.8366667+00:00

When I'm developing ASP.NET Core applications, I just use the default server built into Visual Studio, Kestrel. However, one of my colleagues insists that Kestrel is insufficient and not worth the time to use. In fact, he is extremely adamant that Kestrel is useless and should never, ever be used!! The only thing that we should use is IISExpress in his opinion, when developing and debugging an ASP.NET Core application. Although, he doesn't say why IISExpress is superior and Kestrel isn't work the disk space on the PC.

So, I'm asking here, is there something inherently wrong with Kestrel? Is there some good reason why IISExpress is orders of magnitude better than Kestrel?

Developer technologies | ASP.NET | ASP.NET Core
0 comments No comments

Answer accepted by question author
  1. Bruce (SqlWork.com) 83,816 Reputation points
    2026-03-07T16:24:53.11+00:00

    As your talking development, the choice depends more on the production deployment. If IIS is the production host, and especially if your code is using IIS features like windows authentication, then using IIS express makes sense. Otherwise if the deployment is cloud, Linux or cross platform, then kestrel makes more sense.

    1 person found this answer helpful.
    0 comments No comments

Answer accepted by question author
  1. Marcin Policht 86,845 Reputation points MVP Volunteer Moderator
    2026-03-07T15:02:05.42+00:00

    Kestrel is the default web server used in ASP.NET Core, and it's designed to be lightweight, high-performance, and cross-platform. It is typically sufficient for development, testing, and running production workloads when paired with a reverse proxy like Nginx or Apache in production environments. However, it is essential to understand the strengths and weaknesses of Kestrel in contrast to IISExpress.

    One of the main points of confusion might come from the fact that IISExpress is a simplified version of IIS (Internet Information Services), designed for development and debugging purposes. It is integrated tightly into the Visual Studio ecosystem, offering a simplified way to host and test ASP.NET Core applications without requiring the full IIS setup. However, it's important to note that IISExpress is not a replacement for Kestrel in production. It’s a development tool.

    Kestrel, on the other hand, is much more robust and powerful when used correctly. It's built for high-performance, multi-threaded, asynchronous handling of web requests and can support complex, production-grade scenarios. It's also cross-platform, which means it works on Windows, Linux, and macOS, giving ASP.NET Core applications a wider deployment footprint compared to IISExpress, which is specifically a Windows-based development tool.

    As for performance, Kestrel is generally faster and more scalable than IISExpress, primarily because it is lightweight and optimized for modern web workloads. While IISExpress may seem more "comfortable" in the Visual Studio experience due to its IIS-like setup, it doesn't offer the same raw performance or the flexibility that Kestrel provides. Additionally, Kestrel is capable of running applications directly without needing a reverse proxy, but in a production environment, it is often recommended to place Kestrel behind a reverse proxy like Nginx or Apache for added security and scalability.

    From a development perspective, Kestrel can handle HTTPS, reverse proxying, and load balancing directly, and it can integrate with other tools and libraries used in ASP.NET Core applications. So, unless you are developing something that explicitly requires features that IISExpress provides, Kestrel will likely be more than sufficient.

    If your colleague has such a strong opinion against Kestrel, they might be conflating the use of IIS in production with IISExpress in development. IIS is indeed more feature-rich than Kestrel (due to additional enterprise-level capabilities like process management, built-in authentication, and advanced logging), but that doesn’t mean IISExpress is necessary for development in ASP.NET Core. Kestrel is a better choice when it comes to working with modern, cross-platform web apps.


    If the above response helps answer your question, remember to "Accept Answer" so that others in the community facing similar issues can easily find the solution. Your contribution is highly appreciated.

    hth

    Marcin

    1 person found this answer helpful.

Answer accepted by question author
  1. Q&A Assist
    2026-03-07T15:00:54.89+00:00
    AI generated content. This question contains an answer created with AI from Q&A Assist. Learn more

    Kestrel is not inherently wrong or inferior. For ASP.NET Core, Kestrel is the default, recommended cross‑platform web server and is also the default debug server in Visual Studio for ASP.NET Core projects.

    Key points from the platform guidance:

    1. Role of Kestrel vs. IIS Express
    • ASP.NET Core ships with multiple server options on Windows:
      • Kestrel (default, cross‑platform HTTP server).
      • IIS HTTP Server (in‑process for IIS).
      • HTTP.sys (Windows‑only HTTP server).
    • When using IIS or IIS Express, ASP.NET Core apps can run:
      • In‑process with IIS HTTP Server, or
      • Out‑of‑process behind Kestrel via the ASP.NET Core Module.
    • Visual Studio includes both Kestrel and IIS Express. For ASP.NET Core projects, Kestrel is the default debug server and is preconfigured; IIS Express is the default only for classic ASP.NET.
    1. Why Kestrel is widely recommended
    • Kestrel is the default, cross‑platform HTTP server for ASP.NET Core and provides the best performance and memory utilization among the built‑in options.
    • For new .NET web projects, the default launch profile in Visual Studio is Kestrel because starting Kestrel is significantly faster and gives a more responsive development experience.
    • ASP.NET Core project templates assume Kestrel: WebApplication.CreateBuilder(args) calls UseKestrel internally, so no extra configuration is needed for typical development.
    1. When IIS/IIS Express or HTTP.sys might be preferred
    • IIS/IIS Express or HTTP.sys can be useful when specific Windows‑only features are required, such as:
      • Certain Windows Authentication scenarios (though Kestrel supports Windows auth via Microsoft.AspNetCore.Authentication.Negotiate).
      • Some advanced HTTP.sys features (port sharing, direct file transmission, customizable security descriptors, etc.).
    • IIS/IIS Express is also relevant when debugging an app that is actually hosted by IIS in production and you want to mirror that hosting model closely.
    1. Summary
    • There is no guidance that Kestrel is “useless” or should “never” be used. On the contrary, it is the default and recommended server for ASP.NET Core, especially during development.
    • IIS Express is not “orders of magnitude better”; it is simply another option, mainly useful for specific Windows/IIS scenarios or when matching an IIS hosting environment.

    References:

    1 person found this answer helpful.

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.