- Razor Pages tarjoaa sivukeskeisen mallin ASP.NET Coren päälle ja jakaa saman tehokkaan reitityksen, väliohjelmiston ja Razor-näyttömoottorin kuin MVC.
- Todelliset projektit keskittyvät Pages-kansioon, wwwroot-tiedostoihin, appsettings.json-tiedostoihin ja Program.cs-tiedostoihin, joissa konfiguroidaan palveluita, väliohjelmistoja ja virheiden käsittelyä.
- Työkalut, kuten Visual Studio, Rider ja VS Code, tehostavat mallien, näkymien ja Razor-syntaksin kehitystä, virheenkorjausta, navigointia ja uudelleenjärjestelyä.
- ASP.NET Core yksinkertaistaa Razor-sovellusten julkaisemista IIS:ään, Azureen, mukautetuille palvelimille tai Dockeriin, mikä mahdollistaa skaalautuvat ja toistettavat käyttöönotot.

Jos olet aiemmin käyttänyt Angularia ja ASP.NET Web API:a ja olet alkanut nauttia C#:n käytöstä backendissä, Razor Pages on uskomattoman luonnollinen tapa tuoda tämä ilo frontendiin hylkäämättä olemassa olevaa JavaScript-osaamistasi. Sen sijaan, että hyppäisit suoraan täysin erilaiseen käyttöliittymäpinoon, voit pysyä tutussa ASP.NET Coren maaperällä, käyttää Razor-syntaksia palvelinpuolen renderöintiin ja silti ripotella JavaScriptiä aina kun se on järkevää.
ASP.NET Core Razor Pages on Microsoftin suosittelema lähestymistapa nykyaikaisten verkkosovellusten rakentamiseen .NET-alustalla. Se tarjoaa puhtaan sivupohjaisen mallin tehokkaan ASP.NET Core -prosessin päällä. Se on monialustainen, toimii saumattomasti työkalujen, kuten Visual Studion, Visual Studio Coden ja JetBrains Riderin, kanssa ja skaalautuu pienistä prototyypeistä tuotantoluokan, tietokantapohjaisiin sovelluksiin. Tässä oppaassa käymme läpi, miten reaalimaailman Razor Pages -sovellukset on jäsennelty, miten Program.cs kytkee kaiken yhteen, miten staattiset tiedostot ja konfigurointi toimivat ja miten työkalut, virheenkorjaus ja käyttöönotto tulevat mukaan kuvioihin.
Mitä ASP.NET Core Razor Pages oikeastaan on (ja miten se vertautuu MVC:hen)
Razor Pages on ASP.NET Coren ominaisuus, jonka avulla voit rakentaa verkkosovelluksia sivujen ympärille kontrollerien sijaan. Se tarjoaa yksinkertaisemman mentaalimallin käyttäen silti samaa pohjana olevaa kehystä kuin MVC. Konepellin alla se toimii samalla reititys-, väliohjelmisto- ja hosting-pinolla kuin ohjaimet ja näkymät, mutta jokainen sivu hoitaa omat toimintansa sen sijaan, että kaikki olisi keskitetty ohjainluokkiin.
Jokaista Razor-sivua edustaa tyypillisesti kaksi tiedostoa: .cshtml-tiedosto merkintöjä varten ja .cshtml.cs-tiedosto sivun C#-logiikkaa varten. .cshtml-tiedosto sisältää HTML-koodisi yhdistettynä Razor-syntaksiin (esimerkiksi silmukat, ehdot ja HTML-apuohjelmat), kun taas .cshtml.cs-tiedoston takana oleva koodi sisältää käsittelijämetodeja, kuten OnGet, OnPost, mallin ominaisuuksia ja kaiken sivun renderöintiin tai käsittelyyn tarvittavan logiikan.
Ennen Razor Pagesia ASP.NETin hallitseva malli oli MVC, jossa ohjaimet palauttivat näkymiä ja reitittivät kaikki pyynnöt toimintometodien kautta. MVC on edelleen täysin tuettu ja taisteluissa testattu malli vahvoilla käytännöillä, mutta monissa tilanteissa Razor Pages on nopeampi päätellä, koska sivua lataava ja käsittelevä koodi on fyysisesti sen merkintöjen vieressä eikä haudattuna erilliseen ohjaimeen.
Vaikka Razor Pages siirtää painopisteen pois kontrollereista, se käyttää edelleen samaa Razor-näkymämoottoria ja tukee sekä HtmlHelper- että TagHelper-ohjelmia dynaamisen HTML:n luomiseen. TagHelperit ovat erityisen käteviä: ne laajentavat normaaleja HTML-tageja attribuuteilla, kuten asp-action, asp-controller or asp-route joten voit kytkeä linkkejä ja lomakkeita taustapäätteisiin kirjoittamatta joukkoa manuaalisia URL-osoitteita tai riviin upotettua JavaScriptiä.
Kehittäjille, jotka jo osaavat JavaScriptin ja ovat työskennelleet SPA-kehyksissä, Razor Pages tarjoaa hybridilähestymistavan: palvelimella renderöity HTML nopeita ensilatauksia ja hakukoneoptimointia varten, ja JavaScript ja käyttöliittymäkirjastot kerrostetaan päälle tarvittaessa. Et ole sidottu mihinkään tiettyyn JS-kehykseen tai sitä vastaan, ja voit pitää backendin ja frontendin samassa ratkaisussa, mikä yksinkertaistaa käyttöönottoa ja ylläpitoa.
Razor Pages -verkkosovelluksen luominen ja suorittaminen
Kun luot uuden ASP.NET Core Razor Pages -projektin Visual Studiolla, Visual Studio Codella tai Riderilla, mallipohja muodostaa minimaalisen mutta täydellisen sovelluksen, joka sisältää Program.cs-tiedoston, Pages-kansion, asetustiedostot ja staattisen verkkopääkansion. Saat heti käyttöösi toimivan sivuston, jonka voit ottaa käyttöön välittömästi ja kehittää siitä sitten jotain hienostuneempaa, kuten elokuvaluettelon tai minkä tahansa muun datapohjaisen sovelluksen.
Ennen sovelluksen suorittamista HTTPS-yhteydellä ASP.NET Coren on käytettävä kehitysvarmennetta, johon käyttöjärjestelmäsi luottaa. Ensimmäisellä kerralla, kun suoritat projektin, saatat nähdä valintaikkunan, jossa sinua pyydetään luottamaan siihen. Kun valintaikkuna tulee näkyviin, valitse Kyllä osoittaa, että olet tyytyväinen paikallisen kehitysvarmenteen käyttöön HTTPS-liikenteessä koneellasi. Varmennetta tarvitaan suojattujen päätepisteiden asianmukaiseen testaamiseen ilman selainvaroituksia.
Windowsissa, macOS:ssä tai Linuxissa Visual Studio Code antaa sinun käynnistää sovelluksen painamalla Ctrl+F5 suorittaaksesi sen ilman virheenkorjausta tai käyttämällä Suorita ja virheenkorjaus -paneelia, jos haluat liittää virheenkorjaajan. Ensimmäisellä kerralla VS Code saattaa pyytää sinua valitsemaan virheenkorjaustyypin, kuten C#, .NET 5+ ja .NET Core tai tietty käynnistyskokoonpano, kuten C#: RazorPagesMovie [https] RazorPagesMovie riippuen .NET-versiosta ja työtilasi kokoonpanosta.
Käynnistyksen jälkeen oletusselaimesi avautuu URL-osoitteeseen, joka on samanlainen kuin https://localhost:<port>, jossa portti on satunnaisesti määritetty tai määritetty launchSettings.json-tiedostossa, ja katsot Razor Pages -sovelluksen tarjoamaa kotisivua. Joissakin malleissa näet sen sijaan http://localhost:5001 tai toiseen satamaan; tärkeintä on, että localhost osoittaa, että kyseessä on oma koneesi eikä ulkoinen isäntä.
Kun olet testannut sovelluksen, voit pysäyttää sen IDE-ympäristössä: Visual Studio Codessa valitse Suorita-valikosta Lopeta virheenkorjaus tai paina siirtyminen+F5, kun taas Visual Studio for Macissa käytät Debug > Stop Debugging. Tämä lopettaa istuntoa varten käynnistetyn Kestrel-verkkopalvelininstanssin ja vapauttaa portin muille suorituksille.
Projektin rakenteen ymmärtäminen: kansiot ja avaintiedostot
Käytännön Razor Pages -sovellukset on järjestetty muutamien tärkeiden kansioiden ja asetustiedostojen ympärille, joiden kanssa työskentelet jatkuvasti: Pages, wwwroot, appsettings.json ja Program.cs (ja vanhemmissa versioissa Startup.cs). Näiden osien navigoinnin helppo oppiminen on ratkaisevan tärkeää, koska käytännössä jokainen tutoriaali, esimerkki tai tuotantoprojekti käyttää samoja käytäntöjä.
Pages-kansio on Razor Pages -projektin ydin, ja se sisältää kaikki .cshtml-sivut ja niiden .cshtml.cs-kooditiedostot sekä jaetun asettelun ja osittaiset näkymät. Jokainen sivupari (esimerkiksi Index.cshtml ja Index.cshtml.cs) edustaa kutsuttavaa päätepistettä sovelluksessasi, ja erityiset alaviivalla alkavat tiedostot, kuten _Layout.cshtml, määrittelee sisällön, jota käytetään uudelleen useilla sivuilla.
Asettelutiedosto, jonka nimi on yleensä _Layout.cshtml, määrittää sivustosi kromin, kuten ylänavigointipalkin, alatunnisteen ja tekijänoikeusilmoituksen, ja tarjoaa paikan kunkin yksittäisen sivun rungon renderöinnille. Kun muutat asettelua, vaikutat välittömästi kaikkien sitä käyttävien Razor-sivujen ulkoasuun ja käyttöliittymään, joten se on ensisijainen paikka valikoiden, brändäyksen ja jaettujen skriptien tai tyylien muokkaamiseen.
wwwroot-kansio on nimetty web-juurikansio, jossa sijaitsevat staattiset resurssit, kuten CSS, JavaScript, kuvat ja tavalliset HTML-tiedostot, joita web-palvelin voi suoraan tarjota. Selain voi käyttää mitä tahansa wwwroot-osoitteen alle sijoitettua tiedostoa (staattisten tiedostomääritysten mukaisesti), joten se on oikea paikka sivuston tyylitiedostoille, asiakaspuolen kirjastoille ja merkinnöissäsi viitatuille kuville.
Sovelluksen asetukset tallennetaan yleensä paikkaan appsettings.json (ja ympäristökohtaisia variantteja, kuten appsettings.Development.json), jotka sisältävät asetuksia, kuten yhteysmerkkijonoja ja ominaisuuslippuja. ASP.NET Coren konfigurointijärjestelmä lataa nämä tiedostot ja yhdistää ne ympäristömuuttujiin ja muihin palveluntarjoajiin, mikä helpottaa osioiden sitomista vahvasti tyypitettyihin asetusluokkiin koodissasi.
Program.cs ja ASP.NET Core -prosessi
Program.cs-tiedosto sisältää Razor Pages -sovelluksesi aloituskohdan ja määrittää, miten web-isäntä, palvelut ja väliohjelmistoprosessi konfiguroidaan ennen kuin ensimmäinen pyyntö osuu sivustollesi. Nykyaikaisissa ASP.NET Core -versioissa Program.cs käyttää virtaviivaistettua "minimaalisen ylläpidon" mallia, jossa on ylimmän tason lauseke, joka luo WebApplicationBuilder ja sitten rakentaa ja konfiguroi WebApplication ilmentymä.
Tyypillinen Program.cs-tiedoston kaava alkaa var builder = WebApplication.CreateBuilder(args); joka määrittää isännän yleisillä oletusarvoilla ja kutsuu sitten builder.Services.AddRazorPages(); Razor-sivujen rekisteröimiseksi riippuvuusinjektiosäilöön. Palveluiden määrittämisen jälkeen var app = builder.Build(); luo sovellusobjektin, jonka sitten kytketään väliohjelmistoon ja päätepisteisiin.
Virheiden käsittely ja tietoturvakäyttäytyminen riippuvat suuresti ympäristöstä, joten yleensä näet ympäristötarkistuksen, kuten if (!app.Environment.IsDevelopment()) ottaakseen käyttöön tuotantotason ominaisuudet. Tuossa tilassa löydät yleensä app.UseExceptionHandler("/Error"); joka lähettää käsittelemättömät virheet erilliselle virhesivulle ja app.UseHsts(); joka aktivoi HTTP Strict Transport Security (HSTS) -suojauksen ohjeistaakseen selaimia käyttämään aina HTTPS-protokollaa verkkotunnuksellasi.
Väliohjelmistoputki kootaan sitten kutsuilla, kuten app.UseHttpsRedirection();, app.UseStaticFiles(); or app.MapStaticAssets();, app.UseRouting(); ja valinnaisesti app.UseAuthorization(); jota seuraa päätepisteiden yhdistäminen. HTTPS-uudelleenohjaus pakottaa suojaamattomat HTTP-pyynnöt päivittämään HTTPS:ään, staattinen tiedostojen väliohjelmisto (tai uudempi staattinen omaisuuskartoitus .NET 9:ssä) mahdollistaa resurssien suoran tarjoilun wwwrootista, ja reititys päättää, mikä päätepiste käsittelee kunkin saapuvan URL-osoitteen.
Lopuksi Razor Pages kytketään reititykseen app.MapRazorPages(); valinnaisesti ketjutettu .WithStaticAssets(); uudemmissa malleissa staattisen omaisuuden optimoinnin integroimiseksi, ja sovellus käynnistetään käyttämällä app.Run();. Tässä vaiheessa sovellus kuuntelee määritettyjä portteja ja Kestrel-palvelin on valmis käsittelemään todellisia pyyntöjä, olivatpa ne sitten paikallisesti kehitysympäristössä tai tuotantopalvelimella, kuten IIS:ssä, Azure App Servicessä tai Dockerissa.
Razor Pages -sivut, mallit ja katselumallit todellisissa sovelluksissa
Jokaisen merkittävän Razor Pages -sovelluksen takana on joukko toimialue- ja näkymämalleja, jotka edustavat dataasi ja sen näyttötapaa, olipa kyseessä sitten elokuvaluettelon, blogin tai yrityksen koontinäytön hallinta. Mallit vastaavat tyypillisesti tarkasti tietokantayksiköitä, kun taas näkymämallit voidaan räätälöidä tiettyyn näyttöön tai käyttäjätyönkulkuun yhdistämällä useita malleja tai esimuotoiltuja arvoja helpomman renderöinnin takaamiseksi.
Yleinen kehitystyönkulku on aloittaa yksinkertaisilla C#-luokilla, jotka käyttävät kenttiä ja metodien allekirjoituksia tynkinä, ja kehittää niitä vähitellen oikeiksi malleiksi, joissa on kapseloidut ominaisuudet, validointiattribuutit ja logiikka. Työkalut, kuten JetBrains Rider, tekevät tästä kehityksestä sujuvampaa aikomustoiminnoilla, jotka muuntavat kentät automaattisesti ominaisuuksiksi, luovat johdettuja tyyppejä periytymishierarkioille ja soveltavat muita refaktorointitoimenpiteitä objektimallin tarkentamisen yhteydessä.
Perintä ja rajapinnat auttavat varmistamaan malliesi yhtenäisen rakenteen, yhdenmukaistamaan ne todellisten liiketoimintasääntöjen kanssa ja mahdollistamaan polymorfismin, jossa tietyt toimintatavat ovat yhteisiä, mutta toteutukset eroavat toisistaan. Sinulla voi esimerkiksi olla tukikohta ContentItem tyyppi johdetulla Movie, Series ja Documentary luokat, joilla jokaisella on hienovaraisia eroja, mutta yhteinen sopimus, jota käytetään koko sovelluksessasi.
Kun mallit ovat paikoillaan, Razor Pages- tai MVC-näkymiä voidaan luoda joko käsin tai scaffolding-työkaluilla, jotka luovat sivuja entiteettien listaamista, luomista, muokkaamista ja poistamista varten. Scaffolding nopeuttaa merkittävästi alkuvaiheen kehitystä ja varmistaa, että reititys, mallin sidonta ja validointi on kytketty oikein. Voit sitten mukauttaa tätä omilla merkinnöilläsi ja tyyleilläsi.
.cshtml-tiedostoissa käytetty Razor-syntaksi yhdistyy saumattomasti vahvasti tyypitettyihin malleihin ja näkymämalleihin, minkä ansiosta voit näyttää tietoja, suorittaa silmukoita ja ehtoja sekä luoda linkkejä ja lomakkeita HtmlHelper- tai TagHelper-apuohjelmien avulla menettämättä käännösaikaista turvallisuutta. Tämä C#:n ja merkintäkielen yhdistelmä pitää paljon logiikkaa palvelinpuolella, mutta tuottaa silti selaimessa siistiä HTML:ää, joka toimii hyvin CSS:n ja JavaScriptin kanssa.
Razor-syntaksin, TagHelpereiden ja Riderissa navigoinnin käyttö
Razor-syntaksi on kevyt HTML-taso, joka aktivoituu aina, kun @ symboli tulee näkyviin, mikä helpottaa C#-lausekkeiden, -lausekkeiden tai apukutsujen upottamista suoraan koodiin. Voit selata luetteloita silmukalla, näyttää tai piilottaa elementtejä ehtojen perusteella tai näyttää arvoja ja muotoiltuja päivämääriä ilman erillistä mallipohjaa tai JavaScriptin ripottelemista kaikkialle.
TagHelpers tuntuu HTML:n luonnolliselta jatkeelta, jossa erikoisattribuutit alkavat merkeillä asp- muokata elementtien toimintaa tai tulostetta, usein korvaamalla vanhemmat HtmlHelper-metodit ja poistamalla tarpeen inline script glue -toiminnolle. Esimerkkejä ovat asp-action ja asp-controller reitittääksesi ankkuritunnisteet ja lomakkeet tiettyihin toimintoihin tai reitittääksesi attribuutteja, kuten asp-route-id parametrien välittämiseksi siististi URL-osoitteissa.
IDE-tuki on erittäin tärkeä, kun olet syvällä HTML:n hallinnassa, ja Rider tarjoaa hyödyllisiä ominaisuuksia, kuten navigointipolut editorin alareunassa, jotka näyttävät nykyisen sijaintisi dokumentin rakenteessa. Leivänmuruja voi mukauttaa Editor-osion Asetukset- tai Asetukset-kohdassa, ja ne tekevät pitkien, sisäkkäisiä tunnisteita sisältävien Razor-tiedostojen selaamisesta paljon helpompaa.
MVC-projekteissa Rider ymmärtää myös ohjainten, toimintojen ja näkymien yhdistävät käytännöt, joten toimintotulosten päälle viemällä hiiren osoittimen voit nähdä mahdolliset näkymäpolut ja Ctrl + napsauta (Tai Cmd-napsauta macOS:ssä) hyppää suoraan vastaavaan .cshtml-tiedostoon. Pikanäppäimet, kuten Ctrl + B or Cmd-B tarjoavat nopean tavan navigoida koodikannassasi ilman ratkaisujen etsimistä.
Razor-kohtaisten työkalujen lisäksi Rider sisältää laajan valikoiman HTML-, CSS- ja JavaScript-ohjelmointityökaluja ja pikakorjauksia, joiden avulla voit kirjoittaa siistiä ja hyvin jäsenneltyä asiakaspuolen koodia samassa IDE:ssä kuin C#-taustajärjestelmäsi. Tämä tiivis integraatio voi säästää paljon kontekstikytkimiä rakennettaessa monimutkaista, interaktiivista käyttöliittymää, joka edelleen perustuu palvelimen renderöimiin Razor-näkymiin tai -sivuihin.
Razor Pagesin ja ASP.NET Core -sovellusten virheenkorjaus
Virheenkorjaus on päivittäistä toimintaa web-kehityksessä, eivätkä Razor Pagesia käyttävät ASP.NET Core -sovellukset ole poikkeus, joten vahva virheenkorjaustuki IDE:ssä on välttämätöntä. Sekä Visual Studio että Rider tarjoavat interaktiivisia debuggereja, jotka voivat liittyä Kestrel-prosessiisi, käydä läpi C#-koodia askel askeleelta, tarkastella muuttujia ja arvioida lausekkeita sovelluksen ollessa käynnissä.
Riderin Windows-virheenkorjaus tukee Muokkaa ja jatka -toimintoa, jonka avulla voit muokata koodia sovelluksen ollessa keskeytettynä keskeytyskohdassa ja ottaa muutokset käyttöön käynnistämättä koko virheenkorjausistuntoa uudelleen. Tämä kyky korjata pieniä virheitä tai kokeilla virheenkorjausajon aikana nopeuttaa vianmääritystä merkittävästi, erityisesti suurissa projekteissa, joiden käynnistysajat ovat huomattavan pitkiä.
ASP.NET Coren oletusarvoinen kehittäjäpoikkeussivu otetaan automaattisesti käyttöön, kun ympäristöksi asetetaan kehitysympäristö. Se antaa sinulle yksityiskohtaisen pinon jäljityksen, pyyntötiedot ja diagnostiikan aina, kun käsittelemättömiä poikkeuksia esiintyy. Tämä näkymä on erittäin hyödyllinen paikallisessa virheenkorjauksessa, mutta vaarallinen tuotannossa, koska se voi vuotaa sisäisiä tietoja sovelluksestasi ja ympäristöstäsi.
Arkaluonteisten tietojen suojaamiseksi tuotanto- ja testiympäristöt yleensä poistavat kehittäjän poikkeussivun käytöstä ja käyttävät sen sijaan määritettyä poikkeusten käsittelijän reittiä, usein /Error, jotta näkyviin tulee käyttäjäystävällinen virhenäyttö, kun palvelinpuolen todelliset tiedot kirjataan lokiin. Tätä toimintaa hallitaan Program.cs-tiedostossa ympäristötarkistuksen ja kutsujen avulla UseExceptionHandler ja UseHsts.
Kun asiat todella menevät raiteiltaan ja tutoriaalit eivät vastaa toimintatapojasi, on usein hyödyllistä verrata projektiasi Microsoftin tai muiden luotettavien lähteiden tarjoamaan tunnettuun hyvään esimerkkiin. Monissa virallisissa Razor Pages -tutoriaaleissa julkaistaan valmiita esimerkkiprojekteja, joita voit tarkastella tai ladata verrataksesi omaan koodiisi ja löytääksesi puuttuvia määrityksiä, kirjoitusvirheitä tai väärin sijoitetut tiedostot.
Oikeiden ASP.NET Core Razor -sovellusten julkaiseminen ja käyttöönotto
Razor Pages -sovelluksen toimittaminen on se kohta, jossa aiempi rakenne ja konfigurointi kannattaa, koska ASP.NET Core tukee useita käyttöönottovaihtoehtoja, jotka sopivat erilaisiin hosting-ympäristöihin ja työnkulkuihin. Käytitpä sitten IIS:ää Windowsissa, Linux-säilöjä Dockerissa tai hallittua alustaa, kuten Azure App Serviceä, julkaisuprosessia voidaan ohjata MSBuildin avulla ja integroida CI/CD-putkistoosi.
Sekä Visual Studio että Rider tarjoavat julkaisuprofiileja, joiden avulla voit pakata sovelluksesi ja ottaa sen käyttöön IIS:ssä Web Deployn (MSDeploy) avulla, kopioida sen paikalliseen tai verkkokansioon tai lähettää sen suoraan etäpalvelimelle FTP:n, FTPS:n tai SFTP:n kautta. Julkaisuprofiilin luominen koodaa käyttöönottoasetuksesi, jotta tulevat julkaisut ovat yhtä yksinkertaisia kuin profiilin valitseminen ja painikkeen napsauttaminen tai komennon suorittaminen.
Pilvipalveluissa Azure App Service on suosittu kohde, ja IDE:t integroivat Azure-työkalut verkkosovellusten luomiseen ja julkaisemiseen suoraan projektistasi, jälleen kerran hyödyntäen MSBuildia ja MSDeployta konepellin alla. Tämä lähestymistapa pitää koonti- ja käyttöönottoprosessin yhdenmukaisena paikallisten ja pilviympäristöjen välillä, ja se voidaan automatisoida Azure DevOpsissa, GitHub Actionsissa tai muissa CI-järjestelmissä.
Docker on toinen ensiluokkainen vaihtoehto ASP.NET Corelle, jonka avulla voit säilöä Razor Pages -sovelluksesi, jotta sitä voidaan käyttää ennustettavasti missä tahansa säilöjä tukevassa ympäristössä. Rider ja Visual Studio voivat auttaa sinua luomaan Docker-tiedostoja ja Docker-compose-määrityksiä, mikä mahdollistaa työnkulun, jossa voit kehittää, debuggata ja ottaa käyttöön sovelluksesi säilöissä joko paikallisesti tai orkestroinnissa, kuten Kubernetesissa.
Kohteesta riippumatta julkaisuvaihe kääntää C#-koodisi, niputtaa Razor-näkymät, kopioi staattiset resurssit ja asetuksista riippuen voi myös luoda itsenäisen ajonaikaisen ympäristön, joten isäntäkone ei tarvitse jaettua .NET-asennusta. Tämä niputtaminen muuttaa kehitysprojektisi käyttöönotettavaksi artefaktiksi, joka on valmis oikeiden käyttäjien käyttöön.
Yhdistämällä kaikki nämä osat – kehityssertifikaateista ja Program.cs:stä Pagesin ja wwwrootin kautta virheenkorjaukseen ja julkaisemiseen – Razor Pages tarjoaa pragmaattisen tavan rakentaa reaalimaailman ASP.NET Core -verkkosovelluksia, jotka ovat ylläpidettäviä, suorituskykyisiä ja mukavia kehittäjille, jotka jo nauttivat C#:lla työskentelystä eivätkä ole valmiita luottamaan täysin yhden sivun kehykseen joka tilanteessa.