Web server implementations in ASP.NET Core

Kestrel

Kestrel is the default web server included in ASP.NET Core project templates.

Use Kestrel:

  • By itself as an edge server processing requests directly from a network, including the Internet.

  • With a reverse proxy server, such as Internet Information Services (IIS), Nginx, or Apache.

HTTP.sys

If ASP.NET Core apps are run on Windows, HTTP.sys is an alternative to Kestrel. Kestrel is generally recommended for best performance. HTTP.sys can be used in scenarios where the app is exposed to the Internet and required capabilities are supported by HTTP.sys but not Kestrel.

HTTP.sys can also be used for apps that are only exposed to an internal network.

Custom servers

If the built-in servers don't meet the app's requirements, a custom server implementation can be created. The Open Web Interface for .NET (OWIN) guide demonstrates how to write a Nowin-based IServer implementation.

Last updated