For to dager siden trykket jeg ut en .NET-kjerne-oppstartsanalyse på nytt, fordi jeg satt fast i standard 5000-porten da den ble sluppet, så jeg studerte den nøye.
1. IIS-integrasjon
Hvis du bruker IIS som vert, er ikke dette et problem, kraftig IIS kan hjelpe oss med å konfigurere domenenavn, port osv. på siden. Når det gjelder hvordan man distribuerer en asp.net kjerne-webapplikasjon på IIS, er ikke det poenget her. Beskriv det grovt:
Du må laste ned Net Core SDK og Server Hosting, og nedlastingsadressen er i https://www.microsoft.com/net/download
Etter installasjon, sjekk om .NET Core SDK er installert vellykket på kommandolinjen dotnet-info
Om serververten er vellykket installert i IIS-modulen og håndtererkartleggingen vises nedenfor
Deretter setter du opp nettstedet og spesifiserer filene til publiseringssiden
Til slutt bør programpoolen konfigureres, og velge uadministrert, slik at det finnes en forespørsel om videresending av serververt.
2. Linux-miljø
For ikke å snakke om den spesifikke installasjonen, det finnes også mange av dem. Ifølge instruksjonene på den offisielle nettsiden, altså installer .NET Core-kjøringsmiljøet, så kan det kjøre.
Her er et anbefalt blogginnlegg for din egen referanse: Distribusjon ASP.NET Core-applikasjoner til produksjon (CentOS7)
Tilbake til hovedpoenget, hvordan konfigurere URL- og portparametere
1. Spesifiser i hovedmetoden for programmet
Denne tilnærmingen er ufleksibel og ikke like elegant selv om den leses ved å legge til en konfigurasjonsfil. På dette tidspunktet følte jeg at Microsoft definitivt ikke ville anbefale en slik bruk, så jeg fortsatte å lete etter det.
2. Send miljøvariabelen
Jeg så en artikkel på Internett: Hvordan konfigurere Kestrel-URLer i ASP.NET Core RC2,
Selv om den fortsatt er konfigurert gjennom konfigurasjonsfilen, trenger den ikke å lese opp konfigurasjonsinformasjonen til andre artikler, og den kan brukes direkte ved å binde, eller lime inn koden for å se:
hosting.json
Program.cs
På denne måten kan den også lytte
Nå lytter vi videre: http://localhost:60000
Nå lytter vi videre: http://localhost:60001
Er det ikke fantastisk! Jeg tåler ikke selve kampen, trekk fra kildekoden! Det beste med .NET Core er uten tvil at det har kildekode!
Ved å kilde kan vi vite at det hovedsakelig er WebHostBuilder-klassen, under Microsoft.AspNetCore.Hosting-navnerommet.
Hovedmetoden er Bygg
Hovedfokuset her er å bygge et WebHost-objekt og deretter se videre
Ved å se på kildekoden gjennom Initialize-metoden, kan vi vite URL-adressen som opprettes av EnsureServer-metoden
Her kan vi se at den leser _config[WebHostDefaults.ServerUrlsKey] og _config[DeprecatedServerUrlsKey] fra konfigurasjonen.
Verdien til WebHostDefaults.ServerUrlsKey er en fast verdi
Verdien av DeprecatedServerUrlsKey defineres i starten av WebHost-objektet
Å! Sannheten blir avslørt. Så vi kan sette "server.urls" i konfigurasjonsfilen.
Sammendrag:
For å oppsummere, asp.net kjernen vil lese konfigurasjonen i miljøvariabelen når den starter, og det egentlige poenget er å legge til følgende konfigurasjon i prosjektets egenskaper:
Den har blitt startet i konsollmodus og oppdaget at porten er byttet.
Så dette er et utviklingsmiljø, hvordan implementere det på produksjonslinjen? Dette er også veldig enkelt, med Linux-distribusjon som eksempel, ved å bruke daemon-supervisoren for å starte programmet, legge til miljøvariabler i supervisorens oppstartskonfigurasjon:
Lykkes med glans! Ikke en eneste kodelinje trenger å endres, haha~ |