.NET API ‘standalone’ te hosten met Kestrel met IIS redirect

Date: 2024-05-31

Ja, het is mogelijk om een .NET API ‘standalone’ te hosten met Kestrel en tegelijkertijd andere websites op dezelfde poort in IIS te hosten. Dit kan bereikt worden door gebruik te maken van een reverse proxy-configuratie. In deze configuratie zal IIS fungeren als de frontend webserver en de verzoeken doorsturen naar de Kestrel server die de .NET API host.

Hier zijn de stappen om dit op te zetten:

  1. Installeer en configureer IIS: Zorg ervoor dat IIS correct is geïnstalleerd op je server.
  2. Configureer de .NET API om te draaien op Kestrel:
    • In je .NET API project, zorg ervoor dat de Program.cs is geconfigureerd om Kestrel te gebruiken.
    • Stel Kestrel in om te luisteren naar een specifieke poort (bijvoorbeeld 5000).
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
                webBuilder.UseKestrel(options =>
                {
                    options.ListenAnyIP(5000); // Kestrel luistert op poort 5000
                });
            });
}
  1. Installeer en configureer de URL Rewrite Module in IIS: Deze module is nodig om IIS te configureren als een reverse proxy.
    • Download en installeer de URL Rewrite Module.
    • Open de IIS Manager en selecteer de site waarvoor je een reverse proxy wilt configureren.
    • Voeg een nieuwe URL Rewrite regel toe en configureer deze als een reverse proxy.
  2. Configureer een Reverse Proxy in IIS: Voeg een regel toe in de web.config van de IIS site om de verzoeken door te sturen naar Kestrel:
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://localhost:5000/{R:1}" />
                </rule>
            </rules>
        </rewrite>
        <proxy>
            <reverseProxy enabled="true" />
        </proxy>
    </system.webServer>
</configuration>
  1. Start zowel IIS als de .NET API op Kestrel:
    • Start je .NET API applicatie die Kestrel gebruikt.
    • Zorg ervoor dat IIS draait en correct is geconfigureerd met de reverse proxy regels.

Door deze stappen te volgen, zal IIS als een reverse proxy fungeren en inkomende HTTP-verzoeken op poort 80 (of een andere poort die je configureert) doorsturen naar de Kestrel server die je .NET API host op poort 5000. Hierdoor kunnen zowel IIS en Kestrel effectief samenwerken op dezelfde poort zonder conflicten.

86140cookie-check.NET API ‘standalone’ te hosten met Kestrel met IIS redirect