Twee dagen geleden heb ik een .NET core-opstartanalyse opnieuw afgedrukt, omdat ik verstrikt zat in de standaard 5000-poort toen die werd uitgebracht, dus heb ik die zorgvuldig bestudeerd.
1. IIS-integratie
Als je IIS als host gebruikt, zijn deze geen probleem; krachtige IIS kan ons helpen de domeinnaam, poort, enzovoort van de site te configureren. Wat betreft hoe je een asp.net kernwebapplicatie op IIS uitrolt, dat is hier niet het punt. Beschrijf het globaal:
Je moet de Net Core SDK en Server Hosting downloaden, en het downloadadres is https://www.microsoft.com/net/download
Controleer na de installatie of de .NET Core SDK succesvol is geïnstalleerd op de commandoregel-dotnet-info
Of de serverhost succesvol is geïnstalleerd in de IIS-module en handler mapping wordt hieronder getoond
Stel vervolgens de site in en geef de bestanden aan op de publicatiesite
Ten slotte moet de programmapool worden geconfigureerd en kies voor onbeheerd, zodat er een server host forwarding-verzoek is.
2. Linux-omgeving
Om nog maar te zwijgen van de specifieke installatie, er zijn er ook veel van. Volgens de instructies op de officiële website installeer je de .NET Core-run environment en kan deze draaien.
Hier is een aanbevolen blogpost voor je eigen referentie: Uitrollen ASP.NET Core-applicaties in productie (CentOS7)
Terug naar het hoofdpunt, hoe je URL- en poortparameters configureert
1. Specificeer in de hoofdmethode van het programma
Deze aanpak is inflexibel en niet zo elegant, zelfs niet als deze wordt gelezen door een configuratiebestand toe te voegen. Op dat moment had ik het gevoel dat Microsoft zo'n gebruik zeker niet zou aanraden, dus bleef ik ernaar zoeken.
2. Geef de omgevingsvariabele door
Ik zag een artikel op het internet Hoe je Kestrel-URL's configureert in ASP.NET Core RC2,
Hoewel het nog steeds via het configuratiebestand wordt geconfigureerd, hoeft het de configuratie-informatie niet aan andere artikelen voor te lezen, en kan het direct worden gebruikt door te binden, of de code te plakken om te zien:
hosting.json
Program.cs
Op deze manier kan hij ook luisteren
Nu luisteren we verder: http://localhost:60000
Nu luisteren we verder: http://localhost:60001
Is het niet geweldig! Ik kan het daadwerkelijke gevecht niet uitstaan, trek de broncode maar af! Het beste aan .NET Core is verreweg dat het broncode heeft!
Door broncode te sourcen kunnen we zien dat het voornamelijk de WebHostBuilder-klasse is, onder de naamruimte Microsoft.AspNetCore.Hosting.
De hoofdmethode is Build
De belangrijkste focus hier is het bouwen van een WebHost-object en daarna verder kijken
Door de broncode via de Initialize-methode te bekijken, kunnen we het URL-adres weten dat is aangemaakt door de EnsureServer-methode
Hier zien we dat het _config[WebHostDefaults.ServerUrlsKey] en _config[DeprecatedServerUrlsKey] leest vanuit de configuratie.
De waarde van WebHostDefaults.ServerUrlsKey is een vaste waarde
De waarde van DeprecatedServerUrlsKey wordt gedefinieerd aan het begin van het WebHost-object
Oh! De waarheid wordt onthuld. Dus we kunnen "server.urls" instellen in het configuratiebestand.
Samenvatting:
Samenvattend zal asp.net kern de configuratie in de omgevingsvariabele lezen wanneer deze start, en het eigenlijke doel is om de volgende configuratie toe te voegen aan de projecteigenschappen:
Hij is gestart in consolemodus en ontdekte dat de poort is gewisseld.
Dus dit is een ontwikkelomgeving, hoe breng je die op de productielijn in? Dit is ook heel eenvoudig, neem Linux-implementatie als voorbeeld: gebruik de daemon supervisor om het programma te starten en voeg omgevingsvariabelen toe aan de opstartconfiguratie van de supervisor:
Succes met vlag en wimpel! Er hoeft geen enkele regel code veranderd te worden, haha~ |