Dela via


Vara värd för och distribuera ASP.NET Core Blazor WebAssembly

Anmärkning

Det här är inte den senaste versionen av den här artikeln. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .

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:

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 komponenten About (href="About").
  • About.razor: About komponent.

När appens standarddokument begärs med webbläsarens adressfält (till exempel https://www.contoso.com/):

  1. Webbläsaren gör en begäran.
  2. Standardsidan returneras, vilket vanligtvis är index.html.
  3. index.html initierar appen.
  4. 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/Aboutmisslyckas 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:

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 med dotnet watch (eller dotnet 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 med dotnet watch (eller dotnet 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 med dotnet watch (eller dotnet 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 i service-worker-assets.js-filen till filnamnstillägget .bin.

Om du vill använda ett annat filnamnstillägg än .binersä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 nya blazor.boot.json.gz filer och blazor.boot.json.br filer. (Rekommenderas)
  • Ta bort de komprimerade blazor.boot.json.gz- och blazor.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 nya service-worker-assets.js.br filer och service-worker-assets.js.gz filer. (Rekommenderas)
  • Ta bort de komprimerade service-worker-assets.js.gz- och service-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 &quot;&amp; {.\ChangeDLLExtensions.ps1 '$(SolutionDir)'}&quot;" />
</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.