Delen via


Meerdere gehoste ASP.NET Core-apps Blazor WebAssembly

Opmerking

Dit is niet de nieuwste versie van dit artikel. Zie de .NET 7-versie voor de nieuwste versie van dit artikel.

In dit artikel wordt uitgelegd hoe u een gehoste Blazor WebAssembly app configureert voor het hosten van meerdere Blazor WebAssembly apps.

Configuratie

Selecteer de versie van dit artikel die overeenkomt met uw hostingvereisten, hosting van poorten/domeinen (bijvoorbeeld :5001/:5002 of firstapp.comsecondapp.com/) of routesubpadhosting (bijvoorbeeld /FirstApp en)./SecondApp

Met de huidige hostingselectie gaat dit artikel over het hosten van poorten/domeinen (bijvoorbeeld :5001/:5002 of).firstapp.com/secondapp.com

In de volgende voorbeelden:

  • De projectnaam van de gehoste Blazor WebAssembly app bevindt zich MultipleBlazorApps in een map met de naam MultipleBlazorApps.
  • De drie projecten in de oplossing voordat een tweede client-app wordt toegevoegd, bevinden zich MultipleBlazorApps.Client in de Client map, MultipleBlazorApps.Server in de Server map en MultipleBlazorApps.Shared in de Shared map.
  • De eerste (eerste) client-app is het standaardclientproject van de oplossing die is gemaakt op basis van de Blazor WebAssembly projectsjabloon.
  • Er wordt een tweede client-app toegevoegd aan de oplossing, MultipleBlazorApps.SecondClient in een map met de naam SecondClient.
  • Optioneel kan het serverproject (MultipleBlazorApps.Server) pagina's of weergaven leveren als een Razor Pagina- of MVC-app.
  • De eerste client-app is toegankelijk in een browser op poort 5001 of met een host van firstapp.com. De tweede client-app is toegankelijk in een browser op poort 5002 of met een host van secondapp.com.

Met de huidige selectie bevat dit artikel informatie over het hosten van subpaden (bijvoorbeeld /FirstApp en /SecondApp).

In de volgende voorbeelden:

  • De projectnaam van de gehoste Blazor WebAssembly app bevindt zich MultipleBlazorApps in een map met de naam MultipleBlazorApps.
  • De drie projecten in de oplossing voordat een tweede client-app wordt toegevoegd, bevinden zich MultipleBlazorApps.Client in de Client map, MultipleBlazorApps.Server in de Server map en MultipleBlazorApps.Shared in de Shared map.
  • De eerste (eerste) client-app is het standaardclientproject van de oplossing die is gemaakt op basis van de Blazor WebAssembly projectsjabloon.
  • Er wordt een tweede client-app toegevoegd aan de oplossing, MultipleBlazorApps.SecondClient in een map met de naam SecondClient.
  • Optioneel kan het serverproject (MultipleBlazorApps.Server) pagina's of weergaven als een formele Razor Pagina's- of MVC-app leveren.
  • Beide client-apps gebruiken de standaardpoort die is gedefinieerd door het bestand van Properties/launchSettings.json het MultipleBlazorApps.Server project in de applicationUrl waarde. De eerste client-app is toegankelijk in een browser in het /FirstApp subpad. De tweede client-app is toegankelijk in een browser in het /SecondApp subpad.

Voor de voorbeelden in dit artikel is aanvullende configuratie vereist voor:

  • Toegang tot de apps rechtstreeks in de voorbeeldhostdomeinen en firstapp.comsecondapp.com.
  • Certificaten voor de client-apps om TLS/HTTPS-beveiliging in te schakelen.
  • De server-app configureren als een Razor Pagina-app voor de volgende functies:
    • Integratie van Razor onderdelen in pagina's of weergaven.
    • Prerenderingsonderdelen Razor .

De voorgaande configuraties vallen buiten het bereik van dit artikel. Zie de volgende bronnen voor meer informatie:

Gebruik een bestaande gehoste Blazor WebAssemblyoplossing of maak een nieuwe gehoste Blazor WebAssembly oplossing op basis van de Blazor WebAssembly projectsjabloon door de optie door te -ho|--hosted geven als u de .NET CLI gebruikt of het selectievakje ASP.NET Core Hosted in Visual Studio inschakelt wanneer het project wordt gemaakt in de IDE.

Gebruik een map voor de oplossing met de naam MultipleBlazorApps en de naam van het project MultipleBlazorApps.

Maak een nieuwe map in de oplossing met de naam SecondClient. Voeg in de nieuwe map een tweede Blazor WebAssembly client-app toe met de naam MultipleBlazorApps.SecondClient. Voeg het project toe als een zelfstandige Blazor WebAssembly app. Als u een zelfstandige Blazor WebAssembly app wilt maken, geeft u de -ho|--hosted optie niet door als u de .NET CLI gebruikt of het selectievakje ASP.NET Core Hosted niet gebruikt als u Visual Studio gebruikt.

Breng de volgende wijzigingen aan in het MultipleBlazorApps.SecondClient project:

  • Kopieer het FetchData onderdeel (Pages/FetchData.razor) van de Client/Pages map naar de SecondClient/Pages map. Deze stap is vereist omdat een zelfstandige Blazor WebAssembly app de controller van een Server project niet aanroept voor weergegevens. Hierbij wordt een statisch gegevensbestand gebruikt. Door het onderdeel naar het FetchData toegevoegde project te kopiëren, maakt de tweede client-app ook een web-API-aanroep naar de server-API voor weergegevens.
  • Verwijder de SecondClient/wwwroot/sample-data map, omdat het weather.json bestand in de map niet wordt gebruikt.

In de volgende tabel worden de mappen en projectnamen van de oplossing beschreven nadat de map en MultipleBlazorApps.SecondClient het SecondClient project zijn toegevoegd.

Fysieke map Projectnaam Description
Client MultipleBlazorApps.Client Blazor WebAssembly client-app
SecondClient MultipleBlazorApps.SecondClient Blazor WebAssembly client-app
Server MultipleBlazorApps.Server ASP.NET Core-server-app
Shared MultipleBlazorApps.Shared Project gedeelde resources

Het MultipleBlazorApps.Server project dient de twee Blazor WebAssembly client-apps en biedt weergegevens aan de onderdelen van de client-apps FetchData via een MVC-controller. Optioneel kan het MultipleBlazorApps.Server project ook pagina's of weergaven leveren, als een traditionele Razor Pagina's- of MVC-app. De stappen voor het inschakelen van pagina's of weergaven worden verderop in dit artikel besproken.

Opmerking

In de demonstratie in dit artikel worden namen van statische webassetpaden voor FirstApp het MultipleBlazorApps.Client project en SecondApp voor het MultipleBlazorApps.SecondClient project gebruikt. De namen "FirstApp" en "SecondApp" zijn slechts voor demonstratiedoeleinden. Andere namen zijn acceptabel om de client-apps, zoals App1/App2,Client22Client1/1/ of een soortgelijk naamgevingsschema, te onderscheiden.

Wanneer u aanvragen doorsturen naar de client-apps via een poort of een domein, worden 'FirstApp' en 'SecondApp' intern gebruikt om aanvragen te routeren en antwoorden te leveren voor statische assets en worden ze niet weergegeven in de adresbalk van de browser.

Opmerking

In de demonstratie in dit artikel worden namen van statische webassetpaden voor FirstApp het MultipleBlazorApps.Client project en SecondApp voor het MultipleBlazorApps.SecondClient project gebruikt. De namen "FirstApp" en "SecondApp" zijn slechts voor demonstratiedoeleinden. Andere namen zijn acceptabel om de client-apps, zoals App1/App2,Client22Client1/1/ of een soortgelijk naamgevingsschema, te onderscheiden.

'FirstApp' en 'SecondApp' worden ook weergegeven in de adresbalk van de browser omdat aanvragen worden doorgestuurd naar de twee client-apps met behulp van deze namen. Andere geldige URL-routesegmenten worden ondersteund en de routesegmenten hoeven niet strikt overeen te komen met de namen die worden gebruikt om statische webassets intern te routeren. Het gebruik van 'FirstApp' en 'SecondApp' voor zowel de interne statische assetroutering als app-aanvraagroutering is slechts bedoeld voor convenance in de voorbeelden van dit artikel.

Voeg in het projectbestand van de eerste client-app (MultipleBlazorApps.Client.csproj) een <StaticWebAssetBasePath> eigenschap toe aan een <PropertyGroup> met de waarde voor het instellen van FirstApp het basispad voor de statische assets van het project:

<StaticWebAssetBasePath>FirstApp</StaticWebAssetBasePath>

In het projectbestand van de MultipleBlazorApps.SecondClient app (MultipleBlazorApps.SecondClient.csproj):

  • Voeg een <StaticWebAssetBasePath> eigenschap toe aan een <PropertyGroup> met de waarde :SecondApp

    <StaticWebAssetBasePath>SecondApp</StaticWebAssetBasePath>
    
  • Voeg een projectreferentie voor het MultipleBlazorApps.Shared project toe aan een <ItemGroup>:

    <ItemGroup>
      <ProjectReference Include="..\Shared\MultipleBlazorApps.Shared.csproj" />
    </ItemGroup>
    

Maak in het projectbestand van de server-app (Server/MultipleBlazorApps.Server.csproj) een projectreferentie voor de toegevoegde MultipleBlazorApps.SecondClient client-app in een <ItemGroup>:

<ProjectReference Include="..\SecondClient\MultipleBlazorApps.SecondClient.csproj" />

Configureer in het bestand van Properties/launchSettings.json de server-app het applicationUrlKestrel profiel (MultipleBlazorApps.Server) voor toegang tot de client-apps op poort 5001 en 5002. Als u uw lokale omgeving configureert voor het gebruik van de voorbeelddomeinen, kunnen URL's applicationUrl die u kunt gebruiken firstapp.com en secondapp.com niet de poorten gebruiken.

Opmerking

Het gebruik van poorten in deze demonstratie biedt toegang tot de clientprojecten in een lokale browser zonder dat u een lokale hostingomgeving hoeft te configureren, zodat webbrowsers toegang hebben tot de client-apps via de hostconfiguraties, firstapp.com en secondapp.com. In productiescenario's is een typische configuratie het gebruik van subdomeinen om de client-apps te onderscheiden.

Voorbeeld:

  • De poorten worden verwijderd uit de configuratie van deze demonstratie.
  • De hosts worden gewijzigd om subdomeinen te gebruiken, zoals www.contoso.com voor sitebezoekers en admin.contoso.com beheerders.
  • Er kunnen extra hosts worden opgenomen voor extra client-apps en er is ten minste één host vereist als de server-app ook een Razor pagina- of MVC-app is die pagina's of weergaven bedient.

Als u pagina's of weergaven van de server-app wilt gebruiken, gebruikt u de volgende applicationUrl instelling in het Properties/launchSettings.json bestand, waarmee de volgende toegang mogelijk is:

  • Optioneel reageert de Razor pagina's of MVC-app (MultipleBlazorApps.Server project) op aanvragen op poort 5000.
  • Antwoorden op aanvragen voor de eerste client (MultipleBlazorApps.Client project) bevinden zich op poort 5001.
  • Reacties op aanvragen voor de tweede client (MultipleBlazorApps.SecondClient project) bevinden zich op poort 5002.
"applicationUrl": "https://localhost:5000;https://localhost:5001;https://localhost:5002",

Als u niet van plan bent dat de server-app pagina's of weergaven dient en alleen de Blazor WebAssembly client-apps gebruikt, gebruikt u de volgende instelling, die de volgende toegang toestaat:

  • De eerste client-app reageert op poort 5001.
  • De tweede client-app reageert op poort 5002.
"applicationUrl": "https://localhost:5001;https://localhost:5002",

Verwijder in het bestand van Program.cs de server-app de volgende code, die wordt weergegeven na de aanroep naar UseHttpsRedirection:

  • Als u van plan bent pagina's of weergaven uit de server-app te leveren, verwijdert u de volgende coderegels:

    - app.UseBlazorFrameworkFiles();
    
    - app.MapFallbackToFile("index.html");
    
  • Als u van plan bent om de server-app alleen te gebruiken voor de Blazor WebAssembly client-apps, verwijdert u de volgende code:

    - app.UseBlazorFrameworkFiles();
    
    ...
    
    - app.UseRouting();
    
    - app.MapRazorPages();
    - app.MapControllers();
    - app.MapFallbackToFile("index.html");
    

    Statisch bestands-middleware op de plaats:

    app.UseStaticFiles();
    
  • Middleware toevoegen waarmee aanvragen worden toegewezen aan de client-apps. In het volgende voorbeeld wordt de middleware geconfigureerd die moet worden uitgevoerd wanneer de aanvraagpoort 5001 is voor de eerste client-app of 5002 voor de tweede client-app, of de aanvraaghost voor de eerste client-app of secondapp.com voor de tweede client-app isfirstapp.com.

    Opmerking

    Voor het gebruik van de hosts (firstapp.com/secondapp.com) op een lokaal systeem met een lokale browser is aanvullende configuratie vereist die buiten het bereik van dit artikel valt. Voor lokale tests van dit scenario raden we u aan poorten te gebruiken. Typische productie-apps zijn geconfigureerd voor het gebruik van subdomeinen, zoals www.contoso.com voor sitebezoekers en admin.contoso.com voor beheerders. Met de juiste DNS- en serverconfiguratie, die buiten het bereik van dit artikel valt en afhankelijk is van de gebruikte technologieën, reageert de app op aanvragen op alle hosts die in de volgende code worden genoemd.

    Plaats de volgende code waar u de app.UseBlazorFrameworkFiles(); regel vandaan Program.cshebt verwijderd:

    app.MapWhen(ctx => ctx.Request.Host.Port == 5001 || 
        ctx.Request.Host.Equals("firstapp.com"), first =>
    {
        first.Use((ctx, nxt) =>
        {
            ctx.Request.Path = "/FirstApp" + ctx.Request.Path;
            return nxt();
        });
    
        first.UseBlazorFrameworkFiles("/FirstApp");
        first.UseStaticFiles();
        first.UseStaticFiles("/FirstApp");
        first.UseRouting();
    
        first.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapFallbackToFile("/FirstApp/{*path:nonfile}", 
                "FirstApp/index.html");
        });
    });
    
    app.MapWhen(ctx => ctx.Request.Host.Port == 5002 || 
        ctx.Request.Host.Equals("secondapp.com"), second =>
    {
        second.Use((ctx, nxt) =>
        {
            ctx.Request.Path = "/SecondApp" + ctx.Request.Path;
            return nxt();
        });
    
        second.UseBlazorFrameworkFiles("/SecondApp");
        second.UseStaticFiles();
        second.UseStaticFiles("/SecondApp");
        second.UseRouting();
    
        second.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapFallbackToFile("/SecondApp/{*path:nonfile}", 
                "SecondApp/index.html");
        });
    });
    

    Waarschuwing

    API die afhankelijk is van de hostheader, zoals HttpRequest.Host en RequireHost, is onderhevig aan mogelijke adresvervalsing door clients.

    Als u host- en poortvervalsing wilt voorkomen, gebruikt u een van de volgende methoden:

  • Middleware toevoegen waarmee aanvragen worden toegewezen aan de client-apps. In het volgende voorbeeld wordt de middleware geconfigureerd die moet worden uitgevoerd wanneer het aanvraagsubpad voor de eerste client-app of /SecondApp voor de tweede client-app is/FirstApp.

    Plaats de volgende code waar u de app.UseBlazorFrameworkFiles(); regel vandaan Program.cshebt verwijderd:

    app.MapWhen(ctx => ctx.Request.Path.StartsWithSegments("/FirstApp", 
        StringComparison.OrdinalIgnoreCase), first =>
    {
        first.UseBlazorFrameworkFiles("/FirstApp");
        first.UseStaticFiles();
        first.UseStaticFiles("/FirstApp");
        first.UseRouting();
    
        first.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapFallbackToFile("/FirstApp/{*path:nonfile}",
                "FirstApp/index.html");
        });
    });
    
    app.MapWhen(ctx => ctx.Request.Path.StartsWithSegments("/SecondApp", 
        StringComparison.OrdinalIgnoreCase), second =>
    {
        second.UseBlazorFrameworkFiles("/SecondApp");
        second.UseStaticFiles();
        second.UseStaticFiles("/SecondApp");
        second.UseRouting();
    
        second.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapFallbackToFile("/SecondApp/{*path:nonfile}",
                "SecondApp/index.html");
        });
    });
    
  • Stel het basispad in elke client-app in:

    Werk in het bestand van de eerste client-app index.html (Client/wwwroot/index.html) de <base> tagwaarde bij om het subpad weer te geven. De afsluitende slash is vereist:

    <base href="/FirstApp/" />
    

    Werk in het bestand van index.html de tweede client-app (SecondClient/wwwroot/index.html) de <base> tagwaarde bij om het subpad weer te geven. De afsluitende slash is vereist:

    <base href="/SecondApp/" />
    

Zie ASP.NET Statische kernbestanden Blazorvoor meer informatieUseStaticFiles.

Zie de volgende bronnen voor meer informatie over UseBlazorFrameworkFiles en MapFallbackToFile:

Opmerking

Documentatiekoppelingen naar .NET-referentiebron laden meestal de standaardbranch van de opslagplaats, die de huidige ontwikkeling vertegenwoordigt voor de volgende release van .NET. Als u een tag voor een specifieke release wilt selecteren, gebruikt u de Switch branches of tags vervolgkeuzelijst. Zie Een versietag selecteren van ASP.NET Core-broncode (dotnet/AspNetCore.Docs #26205)voor meer informatie.

Aanvragen van de client-apps naar /WeatherForecast in de server-API zijn aan /FirstApp/WeatherForecast of /SecondApp/WeatherForecast afhankelijk van de client-app die de aanvraag doet. Daarom moeten de controllerroutes die weergegevens retourneren van de server-API een wijziging vereisen om de padsegmenten op te nemen.

Vervang in de weersvoorspellingscontroller van de server-app (Controllers/WeatherForecastController.cs) de bestaande route ([Route("[controller]")]) door WeatherForecastController de volgende routes, waarbij rekening wordt gehouden met de aanvraagpaden van de client:

[Route("FirstApp/[controller]")]
[Route("SecondApp/[controller]")]

Als u pagina's van de server-app wilt gebruiken, voegt u een IndexRazor pagina toe aan de Pages map van de server-app:

Pages/Index.cshtml:

@page
@model MultipleBlazorApps.Server.Pages.IndexModel
@{
    ViewData["Title"] = "Home";
}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Home</title>
</head>
<body>
    <div class="main">
        <div class="content px-4">

            <div>
                <h1>Welcome</h1>
                <p>Hello from Razor Pages!</p>
            </div>
        </div>
    </div>
</body>
</html>

Pages/Index.cshtml.cs:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace MultipleBlazorApps.Server.Pages;

public class IndexModel : PageModel
{
    public void OnGet()
    {
    }
}
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace MultipleBlazorApps.Server.Pages
{
    public class IndexModel : PageModel
    {
        public void OnGet()
        {
        }
    }
}

Opmerking

De voorgaande Index pagina is een minimaal voorbeeld uitsluitend voor demonstratiedoeleinden. Als voor de app extra Razor Pagina-assets zijn vereist, zoals een indeling, stijlen, scripts en importbewerkingen, kunt u deze ophalen uit een app die is gemaakt op basis van de Razor projectsjabloon Pagina's. Zie Razor paginaarchitectuur en -concepten in ASP.NET Core voor meer informatie.

Als u MVC-weergaven van de server-app wilt gebruiken, voegt u een Index weergave en een Home controller toe:

Views/Home/Index.cshtml:

@{
    ViewData["Title"] = "Home";
}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Home</title>
</head>
<body>
    <div class="main">
        <div class="content px-4">

            <div>
                <h1>Welcome</h1>
                <p>Hello from MVC!</p>
            </div>
        </div>
    </div>
</body>
</html>

Controllers/HomeController.cs:

using Microsoft.AspNetCore.Mvc;

namespace MultipleBlazorApps.Server.Controllers;

public class HomeController : Controller
{
    public IActionResult Index() => View();
}

Opmerking

De voorgaande Index weergave is een minimaal voorbeeld uitsluitend voor demonstratiedoeleinden. Als voor de app extra MVC-assets nodig zijn, zoals een indeling, stijlen, scripts en importbewerkingen, kunt u deze ophalen uit een app die is gemaakt op basis van de MVC-projectsjabloon. Zie Aan de slag met ASP.NET Core MVC voor meer informatie.

Zie Integreren ASP.NET Core-onderdelen Razor met MVC of Razor Pages in gehoste Blazor WebAssembly oplossingen voor meer informatie over het gebruik van de Razor onderdelen van de client-apps in pagina's of weergaven van de server-app.

De app uitvoeren

Voer het MultipleBlazorApps.Server project uit:

  • Toegang tot de eerste client-app op https://localhost:5001.
  • Open de toegevoegde client-app op https://localhost:5002.
  • Als de server-app is geconfigureerd voor pagina's of weergaven, opent u de Index pagina of weergave op https://localhost:5000.
  • Toegang tot de eerste client-app op https://localhost:{DEFAULT PORT}/FirstApp.
  • Open de toegevoegde client-app op https://localhost:{DEFAULT PORT}/SecondApp.
  • Als de server-app is geconfigureerd voor pagina's of weergaven, opent u de Index pagina of weergave op https://localhost:{DEFAULT PORT}.

In de voorgaande voorbeeld-URL's is de {DEFAULT PORT} tijdelijke aanduiding de standaardpoort die is gedefinieerd door het bestand van Properties/launchSettings.json het project in de MultipleBlazorApps.ServerapplicationUrl waarde.

Belangrijk

Wanneer u de app uitvoert met de dotnet watch opdracht (of dotnet run) (.NET CLI), controleert u of de opdrachtshell is geopend in de Server map van de oplossing.

Wanneer u de startknop van Visual Studio gebruikt om de app uit te voeren, controleert u of het MultipleBlazorApps.Server project is ingesteld als het opstartproject (gemarkeerd in Solution Explorer).

Statische assets

Wanneer een asset zich in de map van wwwroot een client-app bevindt, geeft u het pad voor de statische assetaanvraag op in onderdelen:

<img alt="..." src="{PATH AND FILE NAME}" />

De tijdelijke aanduiding {PATH AND FILE NAME} is het pad en de bestandsnaam onder wwwroot.

Bijvoorbeeld de bron voor een Jeep-afbeelding (jeep-yj.png) in de vehicle map van wwwroot:

<img alt="Jeep Wrangler YJ" src="vehicle/jeep-yj.png" />

Razor ondersteuning voor klassebibliotheek (RCL)

Voeg de Razor klassebibliotheek (RCL) als een nieuw project toe aan de oplossing:

  • Klik met de rechtermuisknop op de oplossing in Solution Explorer en selecteerNieuw projecttoevoegen>.
  • Gebruik de Razor projectsjabloon Class Library om het project te maken. In de voorbeelden in deze sectie wordt de projectnaam ComponentLibrarygebruikt. Dit is ook de assemblynaam van de RCL. Schakel het selectievakje Ondersteuningspagina's en weergaven niet in.

Maak voor elke gehoste Blazor WebAssembly client-app een projectverwijzing voor het RCL-project door met de rechtermuisknop op elk clientproject in Solution Explorer te klikken enProjectverwijzingtoevoegen> te selecteren.

Gebruik onderdelen van de RCL in de client-apps met een van de volgende methoden:

  • Plaats boven aan het onderdeel een @using instructie voor de naamruimte van de RCL en voeg Razor syntaxis toe voor het onderdeel. Het volgende voorbeeld is voor een RCL met de assemblynaam ComponentLibrary:

    @using ComponentLibrary
    
    ...
    
    <Component1 />
    
  • Geef de naamruimte van de RCL op, samen met de Razor syntaxis voor het onderdeel. Voor deze benadering is geen instructie boven aan het onderdeelbestand vereist @using . Het volgende voorbeeld is voor een RCL met de assemblynaam ComponentLibrary:

    <ComponentLibrary.Component1 />
    

Opmerking

Een @using instructie kan ook worden geplaatst in het bestand van _Import.razor elke client-app, waardoor de naamruimte van de RCL wereldwijd beschikbaar is voor onderdelen in dat project.

Wanneer een andere statische asset zich in de wwwroot map van een RCL bevindt, verwijst u naar de statische asset in een client-app volgens de richtlijnen in de herbruikbare Razor gebruikersinterface in klassebibliotheken met ASP.NET Core:

<img alt="..." src="_content/{PACKAGE ID}/{PATH AND FILE NAME}" />

De {PACKAGE ID} tijdelijke aanduiding is de pakket-id van de RCL. De pakket-id wordt standaard ingesteld op de assemblynaam van het project als <PackageId> niet is opgegeven in het projectbestand. De {PATH AND FILE NAME} tijdelijke aanduiding is het pad en de bestandsnaam onder wwwroot.

In het volgende voorbeeld ziet u de markeringen voor een Jeep-afbeelding (jeep-yj.png) in de vehicle map van de map van de RCL wwwroot . Het volgende voorbeeld is voor een RCL met de assemblynaam ComponentLibrary:

<img alt="Jeep Wrangler YJ" src="_content/ComponentLibrary/vehicle/jeep-yj.png" />

Aanvullende bronnen