Dela via


Appstart

Dricks

Det här innehållet är ett utdrag ur eBook, Blazor for ASP NET Web Forms Developers for Azure, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover thumbnail.

Program som är skrivna för ASP.NET har vanligtvis en global.asax.cs fil som definierar händelsen Application_Start som styr vilka tjänster som konfigureras och görs tillgängliga för både HTML-rendering och .NET-bearbetning. I det här kapitlet tittar vi på hur saker och ting skiljer sig något åt med ASP.NET Core och Blazor Server.

Application_Start och webbformulär

Standardmetoden för webbformulär Application_Start har vuxit i syfte under flera år för att hantera många konfigurationsuppgifter. Ett nytt webbformulärsprojekt med standardmallen i Visual Studio 2022 innehåller nu följande konfigurationslogik:

  • RouteConfig – Routning av program-URL
  • BundleConfig – CSS- och JavaScript-paketering och minifiering

Var och en av dessa enskilda filer finns i App_Start mappen och körs bara en gång i början av vårt program. RouteConfig i standardprojektmallen FriendlyUrlSettings lägger till for web forms så att program-URL:er kan utelämna filnamnstillägget .ASPX . Standardmallen innehåller också ett direktiv som tillhandahåller permanenta HTTP-omdirigeringsstatuskoder (HTTP 301) för .ASPX sidorna till den egna URL:en med filnamnet som utelämnar tillägget.

Med ASP.NET Core och Blazor är dessa metoder antingen förenklade och konsoliderade i Startup klassen eller så elimineras de till förmån för vanliga webbtekniker.

Startstruktur för Blazor Server

Blazor Server-program finns ovanpå en ASP.NET Core 3.0 eller senare version. ASP.NET Core-webbprogram konfigureras i Program.cs eller via ett par metoder i Startup.cs klassen. Ett exempel Program.cs fil visas nedan:

using BlazorApp1.Data;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

app.Run();

Appens nödvändiga tjänster läggs till i instansens WebApplicationBuilderServices samling. Så här konfigureras de olika ASP.NET Core Framework-tjänsterna med ramverkets inbyggda container för beroendeinmatning. De olika builder.Services.Add* metoderna lägger till tjänster som aktiverar funktioner som autentisering, razor-sidor, MVC-styrroutning, SignalR- och Blazor Server-interaktioner bland många andra. Den här metoden behövdes inte i webbformulär eftersom parsningen och hanteringen av ASPX-, ASCX-, ASHX- och ASMX-filerna definierades genom att referera till ASP.NET i konfigurationsfilen web.config. Mer information om beroendeinmatning i ASP.NET Core finns i onlinedokumentationen.

app När har skapats av builderkonfigurerar resten av anropen på app http-pipelinen. Med dessa anrop deklarerar vi uppifrån och ned mellanprogram som hanterar varje begäran som skickas till vårt program. De flesta av dessa funktioner i standardkonfigurationen var utspridda över konfigurationsfilerna för webbformulär och är nu på ett ställe för enkel referens.

Inte längre är konfigurationen av den anpassade felsidan placerad i en web.config fil, men nu är konfigurerad för att alltid visas om programmiljön inte är märkt Development. Dessutom är ASP.NET Core-program nu konfigurerade för att hantera säkra sidor med TLS som standard med metodanropet UseHttpsRedirection .

Därefter görs ett oväntat konfigurationsmetodanrop till UseStaticFiles. I ASP.NET Core måste stöd för begäranden för statiska filer (till exempel JavaScript, CSS och bildfiler) uttryckligen aktiveras och endast filer i appens wwwroot-mapp kan adresseras offentligt som standard.

Nästa rad är den första som replikerar ett av konfigurationsalternativen från webbformulär: UseRouting. Den här metoden lägger till ASP.NET Core-routern i pipelinen och kan antingen konfigureras här eller i de enskilda filer som den kan överväga routning till. Mer information om routningskonfiguration finns i avsnittet Routning.

De sista app.Map* anropen i det här avsnittet definierar slutpunkterna som ASP.NET Core lyssnar på. Dessa vägar är de webbtillgängliga platser som du kan komma åt på webbservern och ta emot innehåll som hanteras av .NET och returneras till dig. Den första posten MapBlazorHub konfigurerar en SignalR-hubb för användning för att tillhandahålla den realtids- och beständiga anslutningen till servern där tillståndet och återgivningen av Blazor-komponenter hanteras. Metodanropet MapFallbackToPage anger den webbtillgängliga platsen för sidan som startar Blazor-programmet och konfigurerar även programmet för att hantera djuplänkningsbegäranden från klientsidan. Du ser den här funktionen på jobbet om du öppnar en webbläsare och navigerar direkt till Blazor-hanterad väg i ditt program, till exempel /counter i standardprojektmallen. Begäran hanteras av reservsidan _Host.cshtml , som sedan kör Blazor-routern och återger räknarsidan.

Den allra sista raden startar programmet, något som inte krävdes i webbformulär (eftersom det förlitade sig på att IIS skulle köras).

Uppgradera BundleConfig-processen

Teknikerna för att paketera tillgångar som CSS-formatmallar och JavaScript-filer har ändrats avsevärt, med andra tekniker som ger snabbt växande verktyg och tekniker för att hantera dessa resurser. Därför rekommenderar vi att du använder ett node-kommandoradsverktyg som Grunt/Gulp/WebPack för att paketera dina statiska tillgångar.

Kommandoradsverktygen Grunt, Gulp och WebPack och deras associerade konfigurationer kan läggas till i ditt program och ASP.NET Core ignorerar i tysthet filerna under programgenereringsprocessen. Du kan lägga till ett anrop för att köra deras aktiviteter genom att lägga till en Target i projektfilen med syntax som liknar följande som utlöser ett gulp-skript och målet i skriptet min :

<Target Name="MyPreCompileTarget" BeforeTargets="Build">
  <Exec Command="gulp min" />
</Target>

Mer information om båda strategierna för att hantera dina CSS- och JavaScript-filer finns i dokumentationen Om paket och minimera statiska tillgångar i ASP.NET Core .