Implémentation du serveur web HTTP.sys dans ASP.NET CoreHTTP.sys web server implementation in ASP.NET Core

Tom Dykstra, Chris Ross et Luke LathamBy Tom Dykstra, Chris Ross, and Luke Latham

HTTP.sys est un serveur web pour ASP.NET Core qui s’exécute uniquement sous Windows.HTTP.sys is a web server for ASP.NET Core that only runs on Windows. HTTP.sys est une alternative au serveur Kestrel et offre des fonctionnalités supplémentaires par rapport à celui-ci.HTTP.sys is an alternative to Kestrel server and offers some features that Kestrel doesn't provide.

Important

HTTP.sys est incompatible avec le Module ASP.NET Core et n’est pas utilisable avec IIS ni IIS Express.HTTP.sys isn't compatible with the ASP.NET Core Module and can't be used with IIS or IIS Express.

HTTP.sys prend en charge les fonctionnalités suivantes :HTTP.sys supports the following features:

  • Authentification WindowsWindows Authentication
  • Partage de portPort sharing
  • HTTPS avec SNIHTTPS with SNI
  • HTTP/2 sur TLS (Windows 10 et versions ultérieures)HTTP/2 over TLS (Windows 10 or later)
  • Transmission de fichier directeDirect file transmission
  • Mise en cache des réponsesResponse caching
  • WebSockets (Windows 8 et versions ultérieures)WebSockets (Windows 8 or later)

Versions Windows prises en charge :Supported Windows versions:

  • Windows 7 ou version ultérieureWindows 7 or later
  • Windows Server 2008 R2 ou une version ultérieureWindows Server 2008 R2 or later

Affichez ou téléchargez l’exemple de code (procédure de téléchargement)View or download sample code (how to download)

Quand utiliser HTTP.sysWhen to use HTTP.sys

HTTP.sys est utile pour les déploiements lorsque :HTTP.sys is useful for deployments where:

  • Il est nécessaire d’exposer directement le serveur à Internet sans passer par IIS.There's a need to expose the server directly to the Internet without using IIS.

    HTTP.sys communique directement avec Internet

  • Un déploiement interne implique une fonctionnalité qui n’est pas disponible dans Kestrel, par exemple, l’authentification Windows.An internal deployment requires a feature not available in Kestrel, such as Windows Authentication.

    HTTP.sys communique directement avec le réseau interne

HTTP.sys est une technologie aboutie qui assure une protection contre de nombreux types d’attaques et offre la robustesse, la sécurité et l’extensibilité d’un serveur web haut de gamme.HTTP.sys is mature technology that protects against many types of attacks and provides the robustness, security, and scalability of a full-featured web server. Pour sa part, IIS s’exécute en tant qu’écouteur HTTP sur HTTP.sys.IIS itself runs as an HTTP listener on top of HTTP.sys.

Prise en charge de HTTP/2HTTP/2 support

HTTP/2 est activé pour les applications ASP.NET Core si les conditions de base suivantes sont remplies :HTTP/2 is enabled for ASP.NET Core apps if the following base requirements are met:

Si une connexion HTTP/2 est établie, HttpRequest.Protocol retourne HTTP/2.If an HTTP/2 connection is established, HttpRequest.Protocol reports HTTP/2.

Si une connexion HTTP/2 est établie, HttpRequest.Protocol retourne HTTP/1.1.If an HTTP/2 connection is established, HttpRequest.Protocol reports HTTP/1.1.

HTTP/2 est activé par défaut.HTTP/2 is enabled by default. Si une connexion HTTP/2 n’est pas établie, la connexion revient à HTTP/1.1.If an HTTP/2 connection isn't established, the connection falls back to HTTP/1.1. Dans une prochaine version de Windows, les indicateurs de configuration HTTP/2 seront disponibles, y compris la possibilité de désactivation de HTTP/2 avec HTTP.sys.In a future release of Windows, HTTP/2 configuration flags will be available, including the ability to disable HTTP/2 with HTTP.sys.

Authentification en mode noyau avec KerberosKernel mode authentication with Kerberos

HTTP.sys délègue l’authentification en mode noyau avec le protocole d’authentification Kerberos.HTTP.sys delegates to kernel mode authentication with the Kerberos authentication protocol. L’authentification en mode utilisateur n’est pas prise en charge avec Kerberos et HTTP.sys.User mode authentication isn't supported with Kerberos and HTTP.sys. Le compte d’ordinateur doit être utilisé pour déchiffrer le ticket/jeton Kerberos obtenu à partir d’Active Directory et transféré par le client au serveur afin d’authentifier l’utilisateur.The machine account must be used to decrypt the Kerberos token/ticket that's obtained from Active Directory and forwarded by the client to the server to authenticate the user. Inscrivez le nom de principal du service (SPN) pour l’hôte, et non l’utilisateur de l’application.Register the Service Principal Name (SPN) for the host, not the user of the app.

Comment utiliser HTTP.sysHow to use HTTP.sys

Configurer l’application ASP.NET Core afin d’utiliser HTTP.sysConfigure the ASP.NET Core app to use HTTP.sys

  1. Il n’est pas nécessaire d’ajouter une référence de package dans le fichier projet dès lors que le métapaquet Microsoft.AspNetCore.App (nuget.org) est utilisé (ASP.NET Core 2.1 ou ultérieur).A package reference in the project file isn't required when using the Microsoft.AspNetCore.App metapackage (nuget.org) (ASP.NET Core 2.1 or later). Si vous n'utilisez pas le métapaquet Microsoft.AspNetCore.App, ajoutez une référence de package à Microsoft.AspNetCore.Server.HttpSys.When not using the Microsoft.AspNetCore.App metapackage, add a package reference to Microsoft.AspNetCore.Server.HttpSys.

  2. Appelez la méthode d’extension UseHttpSys au moment de générer l’hôte web en spécifiant les HttpSysOptions nécessaires :Call the UseHttpSys extension method when building Web Host, specifying any required HttpSysOptions:

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseHttpSys(options =>
            {
                // The following options are set to default values.
                options.Authentication.Schemes = AuthenticationSchemes.None;
                options.Authentication.AllowAnonymous = true;
                options.MaxConnections = null;
                options.MaxRequestBodySize = 30000000;
                options.UrlPrefixes.Add("http://localhost:5000");
            });
    

    Le reste de la configuration de HTTP.sys est géré par le biais des paramètres du Registre.Additional HTTP.sys configuration is handled through registry settings.

    Options HTTP.sysHTTP.sys options

    PropertyProperty DescriptionDescription Par défautDefault
    AllowSynchronousIOAllowSynchronousIO Contrôle si l’entrée/sortie synchrone est autorisée pour le HttpContext.Request.Body et le HttpContext.Response.Body.Control whether synchronous input/output is allowed for the HttpContext.Request.Body and HttpContext.Response.Body. true
    Authentication.AllowAnonymousAuthentication.AllowAnonymous Autorise les requêtes anonymes.Allow anonymous requests. true
    Authentication.SchemesAuthentication.Schemes Spécifie les schémas d’authentification autorisés.Specify the allowed authentication schemes. Peut être modifié à tout moment avant la suppression de l’écouteur.May be modified at any time prior to disposing the listener. Les valeurs sont fournies par l’enum AuthenticationSchemes : Basic, Kerberos, Negotiate, None et NTLM.Values are provided by the AuthenticationSchemes enum: Basic, Kerberos, Negotiate, None, and NTLM. None
    EnableResponseCachingEnableResponseCaching Tente la mise en cache en mode noyau pour les réponses comportant un en-tête compatible.Attempt kernel-mode caching for responses with eligible headers. La réponse peut ne pas inclure d’en-tête Set-Cookie, Vary ou Pragma.The response may not include Set-Cookie, Vary, or Pragma headers. Elle doit comporter un en-tête Cache-Control public et soit une valeur shared-max-age ou max-age, soit un en-tête Expires.It must include a Cache-Control header that's public and either a shared-max-age or max-age value, or an Expires header. true
    MaxAccepts Nombre maximal d'acceptations simultanées.The maximum number of concurrent accepts. 5 × Environment.
    ProcessorCount
    5 × Environment.
    ProcessorCount
    MaxConnections Nombre maximum de connexions simultanées à accepter.The maximum number of concurrent connections to accept. Utilisez -1 pour signifier l’infini,Use -1 for infinite. et null pour utiliser le paramètre du Registre qui s’applique à l’ordinateur dans son ensemble.Use null to use the registry's machine-wide setting. null
    (illimité)(unlimited)
    MaxRequestBodySize Consultez la section MaxRequestBodySize.See the MaxRequestBodySize section. 30 000 000 octets30000000 bytes
    (env. 28,6 Mo)(~28.6 MB)
    RequestQueueLimit Nombre maximal de demandes pouvant être placées en file d'attente.The maximum number of requests that can be queued. 10001000
    ThrowWriteExceptions Indique si les écritures dans le corps de la réponse qui échouent en raison d’une déconnexion du client doivent lever des exceptions ou se terminer normalement.Indicate if response body writes that fail due to client disconnects should throw exceptions or complete normally. false
    (se terminer normalement)(complete normally)
    Timeouts Expose la configuration TimeoutManager de HTTP.sys, également paramétrable dans le Registre.Expose the HTTP.sys TimeoutManager configuration, which may also be configured in the registry. Suivez les liens de l’API pour en savoir plus sur chaque paramètre, y compris les valeurs par défaut :Follow the API links to learn more about each setting, including default values:
    UrlPrefixes Spécifiez UrlPrefixCollection à inscrire auprès de HTTP.sys.Specify the UrlPrefixCollection to register with HTTP.sys. La plus utile est UrlPrefixCollection.Add, qui permet d’ajouter un préfixe à la collection.The most useful is UrlPrefixCollection.Add, which is used to add a prefix to the collection. Ces choix peuvent être modifiés à tout moment avant la suppression de l’écouteur.These may be modified at any time prior to disposing the listener.

    MaxRequestBodySizeMaxRequestBodySize

    Taille maximale autorisée pour le corps d’une demande, en octets.The maximum allowed size of any request body in bytes. Lorsque la valeur est null, elle est illimitée.When set to null, the maximum request body size is unlimited. Cette limite est sans effet sur les connexions mises à niveau, qui sont illimitées.This limit has no effect on upgraded connections, which are always unlimited.

    Pour remplacer la limite d’un seul IActionResult dans une application MVC ASP.NET Core, nous vous recommandons d’utiliser l’attribut RequestSizeLimitAttribute sur une méthode d’action :The recommended method to override the limit in an ASP.NET Core MVC app for a single IActionResult is to use the RequestSizeLimitAttribute attribute on an action method:

    [RequestSizeLimit(100000000)]
    public IActionResult MyActionMethod()
    

    Une exception est levée si l’application tente de configurer la limite sur une demande dont l’application a commencé la lecture.An exception is thrown if the app attempts to configure the limit on a request after the app has started reading the request. La propriété IsReadOnly indique si la propriété MaxRequestBodySize est en lecture seule, et donc s’il est trop tard pour configurer la limite.An IsReadOnly property can be used to indicate if the MaxRequestBodySize property is in a read-only state, meaning it's too late to configure the limit.

    Si l’application doit remplacer MaxRequestBodySize par requête, utilisez IHttpMaxRequestBodySizeFeature :If the app should override MaxRequestBodySize per-request, use the IHttpMaxRequestBodySizeFeature:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
        ILogger<Startup> logger, IServer server)
    {
        app.Use(async (context, next) =>
        {
            context.Features.Get<IHttpMaxRequestBodySizeFeature>()
                .MaxRequestBodySize = 10 * 1024;
    
            var serverAddressesFeature = 
                app.ServerFeatures.Get<IServerAddressesFeature>();
            var addresses = string.Join(", ", serverAddressesFeature?.Addresses);
    
            logger.LogInformation($"Addresses: {addresses}");
    
            await next.Invoke();
        });
    
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }
    
        // Enable HTTPS Redirection Middleware when hosting the app securely.
        //app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();
        app.UseMvc();
    }
    
  3. Si vous utilisez Visual Studio, vérifiez que l’application n’est pas configurée pour exécuter IIS ou IIS Express.If using Visual Studio, make sure the app isn't configured to run IIS or IIS Express.

    Dans Visual Studio, le profil de démarrage par défaut est destiné à IIS Express.In Visual Studio, the default launch profile is for IIS Express. Pour exécuter le projet en tant qu’application console, changez manuellement le profil sélectionné, comme dans la capture d’écran suivante :To run the project as a console app, manually change the selected profile, as shown in the following screen shot:

    Sélectionner le profil d’application console

Configurer Windows ServerConfigure Windows Server

  1. Identifiez les ports à ouvrir pour l’application et utilisez le pare-feu Windows ou les applets de commande PowerShell New-NetFirewallRule pour ouvrir les ports du pare-feu et ainsi permettre au trafic d’atteindre HTTP.sys.Determine the ports to open for the app and use Windows Firewall or the New-NetFirewallRule PowerShell cmdlet to open firewall ports to allow traffic to reach HTTP.sys. Dans les commandes et la configuration de l’application suivantes, le port 443 est utilisé.In the following commands and app configuration, port 443 is used.

  2. Lors du déploiement sur une machine virtuelle Azure, ouvrez les ports dans le groupe de sécurité réseau.When deploying to an Azure VM, open the ports in the Network Security Group. Dans les commandes et la configuration de l’application suivantes, le port 443 est utilisé.In the following commands and app configuration, port 443 is used.

  3. Obtenez et installez des certificats X.509, si nécessaire.Obtain and install X.509 certificates, if required.

    Sous Windows, créez des certificats auto-signés à l’aide de la cmdlet PowerShell New-SelfSignedCertificate.On Windows, create self-signed certificates using the New-SelfSignedCertificate PowerShell cmdlet. Vous trouverez un exemple non pris en charge sur la page UpdateIISExpressSSLForChrome.ps1.For an unsupported example, see UpdateIISExpressSSLForChrome.ps1.

    Installez des certificats auto-signés ou signés par l’autorité de certification dans le magasin Ordinateur Local > Personnel du serveur.Install either self-signed or CA-signed certificates in the server's Local Machine > Personal store.

  4. Si l’application est un déploiement dépendant de .NET Framework, installez .NET Core, .NET Framework ou les deux (si l’application est une application .NET Core ciblant .NET Framework).If the app is a framework-dependent deployment, install .NET Core, .NET Framework, or both (if the app is a .NET Core app targeting the .NET Framework).

    • .NET Core – Si l’application nécessite .NET Core, procurez-vous et exécutez le programme d’installation de .NET Core Runtime à partir de Téléchargements .NET Core..NET Core – If the app requires .NET Core, obtain and run the .NET Core Runtime installer from .NET Core Downloads. N’installez pas le Kit SDK complet sur le serveur.Don't install the full SDK on the server.
    • .NET framework – Si l’application nécessite .NET Framework, consultez le Guide d’installation de .NET Framework..NET Framework – If the app requires .NET Framework, see the .NET Framework installation guide. Installez la version requise de .NET Framework.Install the required .NET Framework. Le programme d’installation du .NET Framework le plus récent est disponible depuis la page Téléchargements .NET Core.The installer for the latest .NET Framework is available from the .NET Core Downloads page.

    Si l’application est un déploiement autonome, elle inclut le runtime dans son déploiement.If the app is a self-contained deployment, the app includes the runtime in its deployment. Aucune installation de framework n’est requise sur le serveur.No framework installation is required on the server.

  5. Configurez les ports et les URL de l’application.Configure URLs and ports in the app.

    Par défaut, ASP.NET Core est lié à http://localhost:5000.By default, ASP.NET Core binds to http://localhost:5000. Pour configurer les ports et les préfixes d’URL, il existe plusieurs possibilités :To configure URL prefixes and ports, options include:

    • UseUrls
    • Arguments de ligne de commande urlsurls command-line argument
    • Variable d’environnement ASPNETCORE_URLSASPNETCORE_URLS environment variable
    • UrlPrefixes

    L’exemple de code suivant montre comment utiliser UrlPrefixes avec l’adresse IP locale du serveur 10.0.0.4 sur le port 443 :The following code example shows how to use UrlPrefixes with the server's local IP address 10.0.0.4 on port 443:

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseHttpSys(options =>
            {
                options.Authentication.Schemes = AuthenticationSchemes.None;
                options.Authentication.AllowAnonymous = true;
                options.MaxConnections = null;
                options.MaxRequestBodySize = 30000000;
                // Server local IP address: 10.0.0.4
                options.UrlPrefixes.Add("https://10.0.0.4:443");
            });
    

    UrlPrefixes présente l’avantage de générer immédiatement un message d’erreur en cas de préfixe mal formé.An advantage of UrlPrefixes is that an error message is generated immediately for improperly formatted prefixes.

    Les paramètres de UrlPrefixes remplacent les paramètres UseUrls/urls/ASPNETCORE_URLS.The settings in UrlPrefixes override UseUrls/urls/ASPNETCORE_URLS settings. Par conséquent, avec UseUrls, urls et la variable d’environnement ASPNETCORE_URLS, il est plus facile de basculer entre Kestrel et HTTP.sys.Therefore, an advantage of UseUrls, urls, and the ASPNETCORE_URLS environment variable is that it's easier to switch between Kestrel and HTTP.sys. Pour plus d'informations, consultez Hôte web ASP.NET Core.For more information, see Hôte web ASP.NET Core.

    HTTP.sys utilise les formats de chaîne UrlPrefix de l’API de serveur HTTP.HTTP.sys uses the HTTP Server API UrlPrefix string formats.

    Avertissement

    Les liaisons génériques de niveau supérieur (http://*:80/ et http://+:80) ne doivent pas être utilisées.Top-level wildcard bindings (http://*:80/ and http://+:80) should not be used. Les liaisons génériques de niveau supérieur créent des failles de sécurité dans l’application.Top-level wildcard bindings create app security vulnerabilities. Cela s’applique aux caractères génériques forts et faibles.This applies to both strong and weak wildcards. Utilisez des noms d’hôte ou des adresses IP explicites plutôt que des caractères génériques.Use explicit host names or IP addresses rather than wildcards. Une liaison générique de sous-domaine (par exemple, *.mysub.com) ne constitue pas un risque de sécurité si vous contrôlez le domaine parent en entier (par opposition à *.com, qui est vulnérable).Subdomain wildcard binding (for example, *.mysub.com) isn't a security risk if you control the entire parent domain (as opposed to *.com, which is vulnerable). Pour plus d’informations, consultez RFC 7230 : Section 5.4 : Hôte.For more information, see RFC 7230: Section 5.4: Host.

  6. Préenregistrez les préfixes d’URL sur le serveur.Preregister URL prefixes on the server.

    L’outil intégré pour configurer HTTP.sys est netsh.exe.The built-in tool for configuring HTTP.sys is netsh.exe. netsh.exe permet de réserver des préfixes d’URL et d’assigner des certificats X.509.netsh.exe is used to reserve URL prefixes and assign X.509 certificates. L’outil requiert des privilèges Administrateur.The tool requires administrator privileges.

    Utilisez l’outil netsh.exe pour enregistrer les URL pour l’application :Use the netsh.exe tool to register URLs for the app:

    netsh http add urlacl url=<URL> user=<USER>
    
    • <URL> – L’URL (Uniform Resource Locator) complète.<URL> – The fully qualified Uniform Resource Locator (URL). N’utilisez pas une liaison de caractère générique.Don't use a wildcard binding. Utilisez un nom d’hôte ou une adresse IP locale valide.Use a valid hostname or local IP address. L’URL doit inclure une barre oblique de fin.The URL must include a trailing slash.
    • <USER> – Spécifie le nom de l’utilisateur ou du groupe d’utilisateurs.<USER> – Specifies the user or user-group name.

    Dans l’exemple suivant, l’adresse IP locale du serveur est 10.0.0.4 :In the following example, the local IP address of the server is 10.0.0.4:

    netsh http add urlacl url=https://10.0.0.4:443/ user=Users
    

    Lorsqu’une URL est inscrite, l’outil répond avec URL reservation successfully added.When a URL is registered, the tool responds with URL reservation successfully added.

    Pour supprimer une URL inscrite, utilisez la commande delete urlacl :To delete a registered URL, use the delete urlacl command:

    netsh http delete urlacl url=<URL>
    
  7. Inscrivez les certificats X.509 sur le serveur.Register X.509 certificates on the server.

    Utilisez l’outil netsh.exe pour enregistrer les certificats pour l’application :Use the netsh.exe tool to register certificates for the app:

    netsh http add sslcert ipport=<IP>:<PORT> certhash=<THUMBPRINT> appid="{<GUID>}"
    
    • <IP> – Spécifie l’adresse IP locale pour la liaison.<IP> – Specifies the local IP address for the binding. N’utilisez pas une liaison de caractère générique.Don't use a wildcard binding. Utilisez une adresse IP valide.Use a valid IP address.
    • <PORT> – Spécifie le port pour la liaison.<PORT> – Specifies the port for the binding.
    • <THUMBPRINT>– Empreinte du certificat X.509.<THUMBPRINT> – The X.509 certificate thumbprint.
    • <GUID> – Un GUID généré par le développeur pour représenter l’application à titre d’information.<GUID> – A developer-generated GUID to represent the app for informational purposes.

    À titre de référence, stockez le GUID dans l’application en tant que balise de package :For reference purposes, store the GUID in the app as a package tag:

    • Dans Visual Studio :In Visual Studio:
      • Ouvrez les propriétés du projet de l’application en cliquant avec le bouton droit sur l’application dans l’Explorateur de solutions et en sélectionnant Propriétés.Open the app's project properties by right-clicking on the app in Solution Explorer and selecting Properties.
      • Sélectionnez l’onglet Package.Select the Package tab.
      • Entrez le GUID que vous avez créé dans le champ Balises.Enter the GUID that you created in the Tags field.
    • Si vous n’utilisez pas Visual Studio :When not using Visual Studio:
      • Ouvrez le chemin d’accès vers le fichier de projet de l’application.Open the app's project file.

      • Ajoutez une propriété <PackageTags> à un <PropertyGroup> nouveau ou existant avec le GUID que vous avez créé :Add a <PackageTags> property to a new or existing <PropertyGroup> with the GUID that you created:

        <PropertyGroup>
          <PackageTags>9412ee86-c21b-4eb8-bd89-f650fbf44931</PackageTags>
        </PropertyGroup>
        

    Dans l’exemple suivant :In the following example:

    • L’adresse IP locale du serveur est 10.0.0.4.The local IP address of the server is 10.0.0.4.
    • Un générateur de GUID aléatoire en ligne fournit la valeur appid.An online random GUID generator provides the appid value.
    netsh http add sslcert 
        ipport=10.0.0.4:443 
        certhash=b66ee04419d4ee37464ab8785ff02449980eae10 
        appid="{9412ee86-c21b-4eb8-bd89-f650fbf44931}"
    

    Lorsqu’un certificat est inscrit, l’outil répond avec SSL Certificate successfully added.When a certificate is registered, the tool responds with SSL Certificate successfully added.

    Pour supprimer l’inscription d’un certificat, utilisez la commande delete sslcert :To delete a certificate registration, use the delete sslcert command:

    netsh http delete sslcert ipport=<IP>:<PORT>
    

    Documentation de référence de netsh.exe :Reference documentation for netsh.exe:

  8. Exécuter l’application.Run the app.

    Les privilèges administrateur ne sont pas requis pour exécuter l’application lors d’une liaison à localhost à l’aide de HTTP (pas HTTPS) avec un numéro de port supérieur à 1024.Administrator privileges aren't required to run the app when binding to localhost using HTTP (not HTTPS) with a port number greater than 1024. Pour les autres configurations (par exemple, l’utilisation d’une adresse IP locale ou la liaison au port 443), exécutez l’application avec des privilèges administrateur.For other configurations (for example, using a local IP address or binding to port 443), run the app with administrator privileges.

    L’application répond à l’adresse IP publique du serveur.The app responds at the server's public IP address. Dans cet exemple, le serveur est contacté à partir d’Internet à son adresse IP publique 104.214.79.47.In this example, the server is reached from the Internet at its public IP address of 104.214.79.47.

    Un certificat de développement est utilisé dans cet exemple.A development certificate is used in this example. La page est chargée en toute sécurité après le contournement de l’avertissement de certificat non approuvé du navigateur.The page loads securely after bypassing the browser's untrusted certificate warning.

    Fenêtre de navigateur affichant la page Index de l’application chargée

Scénarios avec un serveur proxy et un équilibreur de chargeProxy server and load balancer scenarios

Pour les applications hébergées par HTTP.sys qui interagissent avec les demandes provenant d’Internet ou d’un réseau d’entreprise, une configuration supplémentaire peut être nécessaire en cas d’hébergement derrière des serveurs proxy et des équilibreurs de charge.For apps hosted by HTTP.sys that interact with requests from the Internet or a corporate network, additional configuration might be required when hosting behind proxy servers and load balancers. Pour plus d’informations, consultez Configurer ASP.NET Core pour l’utilisation de serveurs proxy et d’équilibreurs de charge.For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

Ressources supplémentairesAdditional resources