Staattisten tiedostojen sijoitaminen muihin kansioihin kuin wwwroot

Sivun luontipäivämäärä :

Ympäristö

Visuaalinen studio
  • Visual Studio 2019
ASP.NET ydin
  • 3.1 (Partaveitsisivu, MVC)

Tietoja staattisten tiedostojen oletussijainnista

Staattiset tiedostot (.js, .css, .png jne.) määritetään oletusarvoisesti wwwroot-kansioon. Näin sivuston käyttäjät voivat nähdä .js .css html-koodin mukana ja heijastaa niitä näytöllä.

Tämän staattisen tiedoston oletussijoittelukansio on wwwroot, Startup.Configure koska se kutsuu seuraavaa app.UseStaticFiles menetelmässä kuvattua menetelmää:

public class Startup
{
  // 省略

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
    // 省略

    app.UseStaticFiles();

    // 省略
  }
}

Fyysisen kansion "wwwroot" polku on URL-osoitteen https://<isäntänimi>/. Esimerkiksi tiedosto osoitteessa wwwroot\image\sample.png löytyy URL-osoitteesta osoitteesta https://<isännän nimi>/image.png ja esimerkki.]

Wwwroot-kansion ulkopuolelle sijoitettuihin tiedostoihin ei olennaisesti viitata Webin URL-osoitteesta.

Staattisten tiedostojen lisääminen wwwroot-kansion lisäksi ja viitepolun muuttaminen URL-osoitteessa

Kansion määritys

Tällä kertaa haluan jättää wwwroot-kansion toiminnon, mutta myös sijoittaa kuvatiedoston erilliseen kansioon, jotta siihen voidaan viitata Webissä.

Projektin kansiokokoonpanon on oltava seuraava, jotta näet kuvatiedostot kunkin Sivuston Sisältö-kansiossa Alueet-kohdassa.

Tässä tilassa URL-osoite .png tiedoston mallissa1.png

  • https://<hostname>/arenas/site1/content/image/sample1.png

Ja

  • https://<Isäntänimi>/site1/content/image/sample1.png

Voi tuntua siltä, että se olisi, mutta täällä

  • https://<Isännän nimi>/site1/image/sample1.png

viitattava -ssa.

Jos muuten lisäät staattisen tiedoston wwwroot-kansion lisäksi, tiedoston koontikääntetoiminto saattaa puuttua. Jos jatkat julkaisemista, tiedostoa ei sijoiteta, joten muista asettaa se takaisin sisältöön.

Ohjelman lisääminen

Jos haluat, että staattiset tiedostot ovat käytettävissä muihin kuin Startup.Configure wwwroot-kansioihin, app.UseStaticFiles kutsu menetelmän muita menetelmiä seuraavasti:

// 追加
using Microsoft.Extensions.FileProviders;
using System.IO;

// 省略

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
  // 省略

  // wwwroot フォルダで静的ファイル参照を有効にする
  app.UseStaticFiles();

  // Site1 用の物理コンテンツフォルダと参照 URL を紐づける
  app.UseStaticFiles(new StaticFileOptions()
  {
    FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Areas/Site1/Content")),
    RequestPath = "/Site1",
  });

  // Site2 用の物理コンテンツフォルダと参照 URL を紐づける
  app.UseStaticFiles(new StaticFileOptions()
  {
    FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Areas/Site2/Content")),
    RequestPath = "/Site2",
  });

  // 省略
}

app.UseStaticFiles Menetelmän kutsuminen ilman argumentteja ottaa wwwroot-kansion käyttöön. Voit lisätä StaticFileOptions lisäasetuksia välittämällä ensimmäiseen argumenttiin.

StaticFileOptions.FileProvider Määrittää fyysisen PhysicalFileProvider kansion, jota haluat ominaisuuden viittaavan staattisena tiedostona välitettäessä -esiintymää. Tässä määritetyn polun alla oleva tiedosto on tiedosto, johon voidaan viitata Webissä. Se voi olla myös RequestPath seuraavien ominaisuuksien URL-osoitteen pääkansio:

env.ContentRootPath Ominaisuus sisältää Web-ohjelman pääpolun (fyysisen polun). Tämä kannattaa yhdistää kohdekansion suhteelliseen polkuun.

StaticFileOptions.RequestPath Ominaisuus kuvaa staattiseen tiedostoon viittaava url-osoitteen pääpolku. Oletusarvo wwwroot https://<ホスト名> perustuu -asetukseen. Kuten yllä RequestPath = "/Site1" olevassa koodissa, jos kirjoitat https://<ホスト名>/Site1 on juuri. Tämä Areas/Site1/Content/xxxx linkittää fyysisen https://<ホスト名>/Site1/xxxx polun URL-osoitteeseen.

Esimerkiksi .png 1:n Areas/Site1/Content/image/sample.png avulla tiedostoon voi https://<ホスト名>/Site1/image/sample.png viitata polussa.

Tarkista toiminto

index.html Aseta img-tunniste niin, että näet kuvan seuraavasti: Polku viittaa myös sivusto1- ja site2-kuviin määritetyllä perusteella.

<!-- 省略 -->

<div class="text-center">
	<h1 class="display-4">Welcome</h1>
	<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

<!-- ここから追加 -->
<img src="~/image/sample.png" />
<img src="~/site1/image/sample1.png" />
<img src="~/site2/image/sample2.png" />
<!-- ここまで追加 -->

Jos näytät sen ja näet kuvan, se on menestys.