Anteckning
Å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.
Varning
Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i .NET och .NET Core Support Policy. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Viktigt!
Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.
För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Den här artikeln beskriver hur du hostar och driftsätter Blazor WebAssembly-appar.
Med Blazor WebAssembly värdmodell:
- Blazor-appen, dess beroenden och .NET-runtime laddas ned till webbläsaren parallellt.
- Appen körs direkt i webbläsarens användargränssnittstråd.
Den här artikeln gäller distributionsscenariot där den Blazor appen placeras på en statisk värdwebbserver eller tjänst. .NET används inte för att hantera Blazor-appen. Den här strategin beskrivs i avsnittet Fristående distribution och andra artiklar i den här noden för IIS, Azure-tjänster, Apache, Nginx och GitHub Pages.
Följande distributionsstrategier stöds:
- Den Blazor appen hanteras av en ASP.NET Core-app. Den här strategin beskrivs i avsnittet Värdbaserad distribution med ASP.NET Core.
- Den Blazor appen placeras på en statisk värdwebbserver eller tjänst, där .NET inte används för att hantera Blazor-appen. Den här strategin beskrivs i avsnittet fristående distribution, som innehåller information om att vara värd för en Blazor WebAssembly-applikation som en underapplikation i IIS.
- En ASP.NET Core-app är värd för flera Blazor WebAssembly appar. Mer information finns i Flera värdbaserade ASP.NET Core Blazor WebAssembly-appar.
Underdomän- och IIS-värdtjänster för underprogram
Underdomänvärdar kräver inte någon särskild konfiguration av appen. Du inte behöver konfigurera appens bassökväg (taggen <base>
i wwwroot/index.html
) för att appen ska vara värd i en underdomän.
IIS-underprogram för värdskap kräver att du anger appens basväg. För mer information och korslänkar till ytterligare vägledning om värdtjänster för IIS-underapplikationer, se Värd och distribuera ASP.NET Core Blazor.
Minska maximal heapstorlek för vissa webbläsare på mobila enheter
När du skapar en Blazor app som körs på klienten (.Client
projekt för en Blazor Web App eller fristående Blazor WebAssembly app) och riktar sig till mobila enhetswebbläsare, särskilt Safari på iOS, kan det krävas att minska det maximala minnet för appen med egenskapen MSBuild EmccMaximumHeapSize
. Standardvärdet är 2 147 483 648 byte, vilket kan vara för stort och leda till att appen kraschar om appen försöker allokera mer minne eftersom webbläsaren inte kan bevilja det. I följande exempel anges värdet till 268 435 456 byte i filen Program
:
När du skapar en Blazor WebAssembly app som riktar sig till mobila enhetswebbläsare, särskilt Safari på iOS, kan det krävas att du minskar det maximala minnet för appen med egenskapen MSBuild EmccMaximumHeapSize
. Standardvärdet är 2 147 483 648 byte, vilket kan vara för stort och leda till att appen kraschar om appen försöker allokera mer minne eftersom webbläsaren inte kan bevilja det. I följande exempel anges värdet till 268 435 456 byte i filen Program
:
<EmccMaximumHeapSize>268435456</EmccMaximumHeapSize>
Mer information om egenskaper och mål för Mono/WebAssembly MSBuild finns i WasmApp.Common.targets
(dotnet/runtime
GitHub-lagringsplats).
Webcil-paketeringsformat för .NET-sammansättningar
Webcil är ett användarvänligt paketeringsformat för .NET-sammansättningar som är utformade för att aktivera användning av Blazor WebAssembly i restriktiva nätverksmiljöer. Webcil-filer använder en Standard WebAssembly-omslutning, där sammansättningarna distribueras som WebAssembly-filer som använder standardfilnamnstillägget .wasm
.
Webcil är standardpaketeringsformatet när du publicerar en Blazor WebAssembly app. Om du vill inaktivera användningen av Webcil anger du följande MSBuild-egenskap i appens projektfil:
<PropertyGroup>
<WasmEnableWebcil>false</WasmEnableWebcil>
</PropertyGroup>
Anpassa hur startresurser läses in
Anpassa hur startresurser läses in med hjälp av api:et loadBootResource
. Mer information finns i ASP.NET Core Blazor start.
Komprimering
När en Blazor WebAssembly-app publiceras komprimeras utdata statiskt i samband med publiceringen för att minska appens storlek och ta bort belastningen för körningskomprimering. Följande komprimeringsalgoritmer används:
Blazor förlitar sig på värden för att tillhandahålla de rätta komprimerade filerna. När du är värd för en Blazor WebAssembly fristående app kan ytterligare arbete krävas för att säkerställa att statiskt komprimerade filer hanteras:
Blazor förlitar sig på värden för att tillhandahålla de rätta komprimerade filerna. När du använder ett ASP.NET Core Hosted-Blazor WebAssembly-projekt kan värdprojektet utföra innehållsförhandling och hantera statiskt komprimerade filer. När du är värd för en Blazor WebAssembly fristående app kan ytterligare arbete krävas för att säkerställa att statiskt komprimerade filer hanteras:
- För konfiguration av IIS-
web.config
komprimering, se avsnittet IIS: Brotli och Gzip-komprimering. - När du är värd för statiska värdlösningar som inte stöder statiskt komprimerad filinnehållsförhandling bör du överväga att konfigurera appen för att hämta och avkoda Brotli-komprimerade filer:
Hämta JavaScript Brotli-avkodaren från google/brotli
GitHub-lagringsplatsen. Den minifierade avkodarfilen heter decode.min.js
och finns i lagringsplatsens js
mapp.
Anmärkning
Om den minifierade versionen av decode.js
-skriptet (decode.min.js
) misslyckas kan du prova att använda den oförminserade versionen (decode.js
) i stället.
Uppdatera appen så att den använder avkodaren.
I filen wwwroot/index.html
anger du autostart
till false
på taggen Blazor<script>
:
<script src="_framework/blazor.webassembly.js" autostart="false"></script>
Efter Blazortaggen <script>
och före den avslutande </body>
taggen lägger du till följande JavaScript-kodblock <script>
. Följande funktion anropar fetch
med cache: 'no-cache'
för att hålla webbläsarens cache uppdaterad.
Blazor Web App:
<script type="module">
import { BrotliDecode } from './decode.min.js';
Blazor.start({
webAssembly: {
loadBootResource: function (type, name, defaultUri, integrity) {
if (type !== 'dotnetjs' && location.hostname !== 'localhost' && type !== 'configuration' && type !== 'manifest') {
return (async function () {
const response = await fetch(defaultUri + '.br', { cache: 'no-cache' });
if (!response.ok) {
throw new Error(response.statusText);
}
const originalResponseBuffer = await response.arrayBuffer();
const originalResponseArray = new Int8Array(originalResponseBuffer);
const decompressedResponseArray = BrotliDecode(originalResponseArray);
const contentType = type ===
'dotnetwasm' ? 'application/wasm' : 'application/octet-stream';
return new Response(decompressedResponseArray,
{ headers: { 'content-type': contentType } });
})();
}
}
}
});
</script>
Fristående Blazor WebAssembly:
<script type="module">
import { BrotliDecode } from './decode.min.js';
Blazor.start({
loadBootResource: function (type, name, defaultUri, integrity) {
if (type !== 'dotnetjs' && location.hostname !== 'localhost' && type !== 'configuration') {
return (async function () {
const response = await fetch(defaultUri + '.br', { cache: 'no-cache' });
if (!response.ok) {
throw new Error(response.statusText);
}
const originalResponseBuffer = await response.arrayBuffer();
const originalResponseArray = new Int8Array(originalResponseBuffer);
const decompressedResponseArray = BrotliDecode(originalResponseArray);
const contentType = type ===
'dotnetwasm' ? 'application/wasm' : 'application/octet-stream';
return new Response(decompressedResponseArray,
{ headers: { 'content-type': contentType } });
})();
}
}
});
</script>
Mer information om hur du läser in startresurser finns i ASP.NET Core Blazor start.
Om du vill inaktivera komprimering lägger du till egenskapen CompressionEnabled
MSBuild i appens projektfil och anger värdet till false
:
<PropertyGroup>
<CompressionEnabled>false</CompressionEnabled>
</PropertyGroup>
Egenskapen CompressionEnabled
kan skickas till kommandot dotnet publish
med följande syntax i ett kommandogränssnitt:
dotnet publish -p:CompressionEnabled=false
Om du vill inaktivera komprimering lägger du till egenskapen BlazorEnableCompression
MSBuild i appens projektfil och anger värdet till false
:
<PropertyGroup>
<BlazorEnableCompression>false</BlazorEnableCompression>
</PropertyGroup>
Egenskapen BlazorEnableCompression
kan skickas till kommandot dotnet publish
med följande syntax i ett kommandogränssnitt:
dotnet publish -p:BlazorEnableCompression=false
Skriv om URL:er för korrekt routning
Routingen för sidkomponenter i en Blazor WebAssembly-app är inte lika enkelt som routing av begäranden i en Blazor Server-app. Överväg en Blazor WebAssembly app med två komponenter:
-
Main.razor
: Laddas vid appens rot och innehåller en länk till komponentenAbout
(href="About"
). -
About.razor
:About
komponent.
När appens standarddokument begärs med webbläsarens adressfält (till exempel https://www.contoso.com/
):
- Webbläsaren gör en begäran.
- Standardsidan returneras, vilket vanligtvis är
index.html
. -
index.html
initierar appen. -
Router-komponenten laddas och Razor-
Main
-komponenten återges.
På huvudsidan fungerar det att välja länken till komponenten About
på klientsidan eftersom routern Blazor hindrar webbläsaren från att göra en begäran på Internet till www.contoso.com
för About
och tillhandahåller den renderade About
-komponenten själv. Alla begäranden om interna slutpunkter i Blazor WebAssembly app fungerar på samma sätt: Begäranden utlöser inte webbläsarbaserade begäranden till serverbaserade resurser på Internet. Routern hanterar begäranden internt.
Om en begäran görs med webbläsarens adressfält för www.contoso.com/About
misslyckas begäran. Det finns ingen sådan resurs på appens Internetvärd, så ett 404 – Hittades inte svar returneras.
Eftersom webbläsare gör begäranden till Internetbaserade värdar för sidor på klientsidan måste webbservrar och värdtjänster skriva om alla begäranden om resurser som inte fysiskt finns på servern till sidan index.html
. När index.html
returneras tar appens Blazor router över och svarar med rätt resurs.
När du distribuerar till en IIS-server kan du använda URL-omskrivningsmodulen med appens publicerade web.config
fil. Mer information finns i Värd och distribuera ASP.NET Core Blazor WebAssembly med IIS.
Hostad distribution med ASP.NET Core
En värdbaserad distribution hanterar Blazor WebAssembly-appen till webbläsare från en ASP.NET Core-app som körs på en webbserver.
Klienten Blazor WebAssembly app publiceras i /bin/Release/{TARGET FRAMEWORK}/publish/wwwroot
-mappen för serverappen, tillsammans med andra statiska webbtillgångar i serverappen. De två apparna distribueras tillsammans. En webbserver som kan vara värd för en ASP.NET Core-app krävs. För en värdbaserad distribution innehåller Visual Studio projektmallen Blazor WebAssembly App (blazorwasm
mall när du använder kommandot dotnet new
) med alternativet Hosted
valt (-ho|--hosted
när du använder kommandot dotnet new
).
Mer information finns i följande artiklar:
- ASP.NET Core-appens värdskap och distribuering: Värdskap och distribuering av ASP.NET Core
- Distribution till Azure App Service: Publicera en ASP.NET Core-app till Azure med Visual Studio
- Blazor projektmallar: ASP.NET Core Blazor projektstruktur
Distribution av en värdbaserad körbar applikation som är ramverksberoende för en specifik plattform
Om du vill distribuera en värdbaserad Blazor WebAssembly app som en ramverksberoende körbar fil för en specifik plattform (inte fristående) använder du följande vägledning baserat på de verktyg som används.
Visual Studio
En fristående distribution har konfigurerats för en genererad publiceringsprofil (.pubxml
). Bekräfta att Server projektets publiceringsprofil innehåller egenskapen <SelfContained>
MSBuild inställd på false
.
I .pubxml
filen med publiceringsprofilen i mappen för Server-projektet Properties
<SelfContained>false</SelfContained>
Ange Runtime Identifier (RID) med inställningen Target Runtime i Settings-området i Publish UI, som genererar egenskapen <RuntimeIdentifier>
MSBuild i publiceringsprofilen:
<RuntimeIdentifier>{RID}</RuntimeIdentifier>
I föregående konfiguration är platshållaren {RID}
Runtime Identifier (RID).
Publicera Server-projektet i konfigurationen Release.
Anmärkning
Det går att publicera en app med publiceringsprofilinställningar med hjälp av .NET CLI genom att skicka /p:PublishProfile={PROFILE}
till kommandot dotnet publish
, där platshållaren {PROFILE}
är profilen. För mer information, se avsnitten Publiceringsprofiler och Mapp-publiceringsexempel i artikeln Visual Studio publiceringsprofiler (.pubxml) för apputveckling i ASP.NET Core. Om du skickar RID i kommandot dotnet publish
och inte i publiceringsprofilen, använd MSBuild-egenskapen (/p:RuntimeIdentifier
) med kommandot och inte med alternativet -r|--runtime
.
.NET CLI (kommandoradsgränssnitt för .NET)
Konfigurera en fristående distribution genom att placera MSBuild-egenskapen <SelfContained>
i en <PropertyGroup>
i projektfilen för Server-projektet och ställa in den på false
:
<SelfContained>false</SelfContained>
Viktigt!
Egenskapen SelfContained
måste placeras i Server projektets projektfil. Egenskapen kan inte anges korrekt med kommandot dotnet publish
med hjälp av alternativet --no-self-contained
eller egenskapen MSBuild /p:SelfContained=false
.
Ange Runtime Identifier (RID) genom att använda antingen på något av följande sätt:
Alternativ 1: Ställ in RID i en
<PropertyGroup>
i projektfilen för Server-projektet:<RuntimeIdentifier>{RID}</RuntimeIdentifier>
I föregående konfiguration är platshållaren
{RID}
Runtime Identifier (RID).Publicera appen i versionskonfigurationen från Server-projektet:
dotnet publish -c Release
Alternativ 2: Skicka RID i kommandot
dotnet publish
som egenskapen MSBuild (/p:RuntimeIdentifier
), inte med alternativet-r|--runtime
:dotnet publish -c Release /p:RuntimeIdentifier={RID}
I föregående kommando är platshållaren
{RID}
Runtime Identifier (RID).
Mer information finns i följande artiklar:
Fristående utplacering
En fristående distribution hanterar Blazor WebAssembly-appen som en uppsättning statiska filer som begärs direkt av klienter. Alla statiska filservrar kan hantera Blazor-appen.
Fristående distributionstillgångar publiceras i antingen /bin/Release/{TARGET FRAMEWORK}/publish/wwwroot
-mappen eller bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish
-mappen, där {TARGET FRAMEWORK}
är platshållaren för målramverket.
Azure App Service
Blazor WebAssembly appar kan distribueras till Azure App Services i Windows, som är värd för appen på IIS.
Distribution av en fristående Blazor WebAssembly app till Azure App Service för Linux stöds inte för närvarande. Vi rekommenderar att hosta en fristående Blazor WebAssembly-app med Azure Static Web Appssom stöder det här scenariot.
Fristående med Docker
En fristående Blazor WebAssembly app publiceras som en uppsättning statiska filer för värdhantering av en statisk filserver.
För att köra appen i Docker:
- Välj en Docker-container med webbserverstöd, till exempel Nginx eller Apache.
- Kopiera
publish
mapptillgångar till en platsmapp som definierats på webbservern för hantering av statiska filer. - Använd ytterligare konfiguration efter behov för att hantera Blazor WebAssembly-appen.
Konfigurationsvägledning finns i följande resurser:
Värdkonfigurationsvärden
Blazor WebAssembly applikationer kan acceptera följande värdkonfigurationsvärden som kommandoradsargument vid körtid i utvecklingsmiljö.
Rot för innehåll
Argumentet --contentroot
anger den absoluta sökvägen till katalogen som innehåller appens innehållsfiler (innehållsroten). I följande exempel är /content-root-path
rotvägen för appens innehåll.
Ange argumentet när du kör appen lokalt i kommandotolken. Från appens katalog kör du:
dotnet watch --contentroot=/content-root-path
Lägg till en post i
launchSettings.json
-filen för appen i IIS Express-profilen. Den här inställningen används när appen körs med Visual Studio-felsökningsprogrammet och från en kommandotolk meddotnet watch
(ellerdotnet run
)."commandLineArgs": "--contentroot=/content-root-path"
I Visual Studio anger du argumentet i Egenskaper>Felsökning>Applikationsargument. Om du anger argumentet på egenskapssidan för Visual Studio läggs argumentet till i filen
launchSettings.json
.--contentroot=/content-root-path
Sökvägsbas
Argumentet --pathbase
anger appbassökvägen för en app som körs lokalt med en relativ URL-sökväg som inte är rot (taggen <base>
href
är inställd på en annan sökväg än /
för mellanlagring och produktion). I följande exempel är /relative-URL-path
appens sökvägsbas. För mer information, se basvägen för ASP.NET Core-app Blazor.
Viktigt!
Till skillnad från sökvägen som tillhandahålls till href
via <base>
-taggen, ta inte med ett snedstreck på slutet (/
) när du anger argumentvärdet för --pathbase
. Om appbassökvägen anges i taggen <base>
som <base href="/CoolApp/">
(innehåller ett avslutande snedstreck) skickar du kommandoradsargumentvärdet som --pathbase=/CoolApp
(inget avslutande snedstreck).
Ange argumentet när du kör appen lokalt i kommandotolken. Från appens katalog kör du:
dotnet watch --pathbase=/relative-URL-path
Lägg till en post i
launchSettings.json
-filen för appen i IIS Express-profilen. Den här inställningen används när du kör appen med Visual Studio-felsökningsprogrammet och från en kommandotolk meddotnet watch
(ellerdotnet run
)."commandLineArgs": "--pathbase=/relative-URL-path"
I Visual Studio anger du argumentet i Egenskaper>Felsökning>Applikationsargument. Om du anger argumentet på egenskapssidan för Visual Studio läggs argumentet till i filen
launchSettings.json
.--pathbase=/relative-URL-path
För mer information, se basvägen för ASP.NET Core-app Blazor.
URLer
Argumentet --urls
anger IP-adresser eller värdadresser med portar och protokoll för att lyssna efter begäranden.
Ange argumentet när du kör appen lokalt i kommandotolken. Från appens katalog kör du:
dotnet watch --urls=http://127.0.0.1:0
Lägg till en post i
launchSettings.json
-filen för appen i IIS Express-profilen. Den här inställningen används när du kör appen med Visual Studio-felsökningsprogrammet och från en kommandotolk meddotnet watch
(ellerdotnet run
)."commandLineArgs": "--urls=http://127.0.0.1:0"
I Visual Studio anger du argumentet i Egenskaper>Felsökning>Applikationsargument. Om du anger argumentet på egenskapssidan för Visual Studio läggs argumentet till i filen
launchSettings.json
.--urls=http://127.0.0.1:0
Konfigurera trimmern
Blazor utför IL-trimning (Intermediate Language) på varje releasebygge för att ta bort onödiga IL från utdataassemblyna. Mer information finns i Konfigurera Trimmer för ASP.NET Core Blazor.
Konfigurera Länkare
Blazor utför länkning av mellanliggande språk (IL) vid varje Release-byggnad för att ta bort onödiga IL från utdatafilerna. Mer information finns i Konfigurera Linker för ASP.NET Core Blazor.
Ändra filnamnstillägget för DLL-filer
Det här avsnittet gäller för .NET 5 till .NET 7. I .NET 8 eller senare distribueras .NET-sammansättningar som WebAssembly-filer (.wasm
) med hjälp av Webcil-filformatet.
Om en brandvägg, antivirusprogram eller nätverkssäkerhetsinstallation blockerar överföringen av appens DLL-filer (Dynamic Link Library) (.dll
) kan du följa anvisningarna i det här avsnittet för att ändra filnamnstilläggen för appens publicerade DLL-filer.
Att ändra filnamnstilläggen för appens DLL-filer kanske inte löser problemet eftersom många säkerhetssystem söker igenom innehållet i appens filer, inte bara kontrollerar filnamnstillägg.
Om du vill ha en mer robust metod i miljöer som blockerar nedladdning och körning av DLL-filer kan du antingen av följande metoder:
- Använd .NET 8 eller senare, som paketerar .NET-sammansättningar som WebAssembly-filer (
.wasm
) med hjälp av filformatet Webcil . Mer information finns i avsnittet Webcil-paketeringsformat för .NET-sammansättningar i en .NET 8- eller senare version av den här artikeln. - I .NET 6 eller senare använder du en anpassad distributionslayout.
Det finns metoder från tredje part för att hantera detta problem. Mer information finns i resurserna på Awesome Blazor.
När du har publicerat appen använder du ett gränssnittsskript eller en DevOps-byggpipeline för att byta namn på .dll
filer för att använda ett annat filnamnstillägg i katalogen för appens publicerade utdata.
I följande exempel:
- PowerShell (PS) används för att uppdatera filnamnstilläggen.
-
.dll
filer har bytt namn för att använda filnamnstillägget.bin
från kommandoraden. - Filer som anges i det publicerade Blazor startmanifestet med ett
.dll
filnamnstillägg uppdateras till filtillägget.bin
. - Om också service worker-tillgångar används uppdaterar ett PowerShell-kommando de
.dll
-filer som anges iservice-worker-assets.js
-filen till filnamnstillägget.bin
.
Om du vill använda ett annat filnamnstillägg än .bin
ersätter du .bin
i följande kommandon med önskat filnamnstillägg.
I följande kommandon är {PATH}
platshållaren för sökvägen till den publicerade _framework
-mappen i publish
-mappen.
Byt namn på filnamnstillägg i mappen:
dir {PATH} | rename-item -NewName { $_.name -replace ".dll\b",".bin" }
Byt namn på filnamnstillägg i blazor.boot.json
filen:
((Get-Content {PATH}\blazor.boot.json -Raw) -replace '.dll"','.bin"') | Set-Content {PATH}\blazor.boot.json
Om även service worker-resurser används eftersom appen är en progressiv webbapp (PWA):
((Get-Content {PATH}\service-worker-assets.js -Raw) -replace '.dll"','.bin"') | Set-Content {PATH}\service-worker-assets.js
I föregående kommando är platshållaren {PATH}
sökvägen till den publicerade service-worker-assets.js
-filen.
Använd någon av följande metoder för att hantera den komprimerade blazor.boot.json
filen:
- Återkomprimera den uppdaterade
blazor.boot.json
filen och skapa nyablazor.boot.json.gz
filer ochblazor.boot.json.br
filer. (Rekommenderas) - Ta bort de komprimerade
blazor.boot.json.gz
- ochblazor.boot.json.br
-filerna. (Komprimering har inaktiverats med den här metoden.)
För en komprimerad fil av en service-worker-assets.js
kan du använda någon av följande metoder:
- Återkomprimera den uppdaterade
service-worker-assets.js
filen och skapa nyaservice-worker-assets.js.br
filer ochservice-worker-assets.js.gz
filer. (Rekommenderas) - Ta bort de komprimerade
service-worker-assets.js.gz
- ochservice-worker-assets.js.br
-filerna. (Komprimering har inaktiverats med den här metoden.)
För att automatisera tilläggsändringen i Windows i .NET 6/7 använder följande metod ett PowerShell-skript som placeras i projektets rot. Följande skript, som inaktiverar komprimering, är grunden för ytterligare ändringar om du vill återkomprimera blazor.boot.json
filen och service-worker-assets.js
filen om appen är en progressiv webbapp (PWA). Sökvägen till publish
mappen skickas till skriptet när den körs.
ChangeDLLExtensions.ps1:
:
param([string]$filepath)
dir $filepath\wwwroot\_framework | rename-item -NewName { $_.name -replace ".dll\b",".bin" }
((Get-Content $filepath\wwwroot\_framework\blazor.boot.json -Raw) -replace '.dll"','.bin"') | Set-Content $filepath\wwwroot\_framework\blazor.boot.json
Remove-Item $filepath\wwwroot\_framework\blazor.boot.json.gz
Remove-Item $filepath\wwwroot\_framework\blazor.boot.json.br
Om service worker-tillgångar också används eftersom appen är en progressiv webbapp (PWA) lägger du till följande kommandon:
((Get-Content $filepath\wwwroot\service-worker-assets.js -Raw) -replace '.dll"','.bin"') | Set-Content $filepath\wwwroot\service-worker-assets.js
Remove-Item $filepath\wwwroot\service-worker-assets.js.gz
Remove-Item $filepath\wwwroot\service-worker-assets.js.br
I projektfilen körs skriptet när appen har publicerats för Release
-konfigurationen:
<Target Name="ChangeDLLFileExtensions" AfterTargets="AfterPublish" Condition="'$(Configuration)'=='Release'">
<Exec Command="powershell.exe -command "& {.\ChangeDLLExtensions.ps1 '$(SolutionDir)'}"" />
</Target>
När du har publicerat appen, komprimera manuellt blazor.boot.json
och service-worker-assets.js
igen, om de används, för att återaktivera komprimering.
Anmärkning
När du byter namn på och använder fördröjd inläsning av samma komponenter, se anvisningarna i Fördröjd inläsning av komponenter i ASP.NET Core Blazor WebAssembly.
Vanligtvis kräver appens server konfiguration av statiska tillgångar för att hantera filerna med det uppdaterade tillägget. För en app som hanteras av IIS lägger du till en MIME-mappningspost (<mimeMap>
) för det nya filtillägget i avsnittet statiskt innehåll (<staticContent>
) i en anpassad web.config
fil. I följande exempel förutsätts att filnamnstillägget ändras från .dll
till .bin
:
<staticContent>
...
<mimeMap fileExtension=".bin" mimeType="application/octet-stream" />
...
</staticContent>
Inkludera en uppdatering för komprimerade filer om komprimering används:
<mimeMap fileExtension=".bin.br" mimeType="application/octet-stream" />
<mimeMap fileExtension=".bin.gz" mimeType="application/octet-stream" />
Ta bort posten för filnamnstillägget .dll
:
- <mimeMap fileExtension=".dll" mimeType="application/octet-stream" />
Ta bort poster för komprimerade .dll
filer om komprimering används:
- <mimeMap fileExtension=".dll.br" mimeType="application/octet-stream" />
- <mimeMap fileExtension=".dll.gz" mimeType="application/octet-stream" />
Mer information om anpassade web.config
filer finns i avsnittet Använda en anpassad web.config
fil.
Tidigare driftsättning korruption
Vanligtvis vid utplacering:
- Endast de filer som har ändrats ersätts, vilket vanligtvis resulterar i en snabbare distribution.
- Befintliga filer som inte ingår i den nya distributionen finns kvar för användning av den nya distributionen.
I sällsynta fall kan kvardröjande filer från en tidigare distribution skada en ny distribution. Att ta bort den befintliga distributionen (eller den lokalt publicerade appen före distributionen) kan lösa problemet med en skadad distribution. Att ta bort den befintliga distributionen en gång räcker ofta för att lösa problemet, bland annat för en DevOps-bygg- och distributionspipeline.
Om du fastställer att det alltid krävs att rensa en tidigare distribution när en DevOps-bygg- och distributionspipeline används kan du tillfälligt lägga till ett steg i bygg-pipelinen för att ta bort den tidigare distributionen för varje ny distribution tills du felsöker den exakta orsaken till skadan.
ASP.NET Core