Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Tips/Råd
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.
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 innehåller 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 lägger till FriendlyUrlSettings-komponenten för webbformulär så att applikationens URL:er kan utelämna .ASPX-filnamnstillägget. Standardmallen innehåller också ett direktiv som tillhandahåller permanenta HTTP-omdirigeringsstatuskoder (HTTP 301) för .ASPX-sidorna till den vänliga URL:en utan filnamnstillägg.
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 genom 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 web.config konfigurationsfilen. Mer information om beroendeinmatning i ASP.NET Core finns i onlinedokumentationen.
Efter att app har byggts av builder, konfigurerar resten av anropen på app dess HTTP-pipeline. 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 användas 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 uppgifter genom att lägga till en Target i din projektfil med en syntax som liknar följande och som skulle utlösa ett gulp-skript samt målet min inne i det skriptet:
<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 bunta och minimera statiska resurser i ASP.NET Core.