Plasarea fișierelor statice în alte foldere decât wwwroot

Data creării paginii :

Mediu

Studio vizual
  • Studio vizual 2019
ASP.NET Core
  • 3.1 (Pagina razor, MVC)

Despre locația implicită de plasare pentru fișiere statice

Fișierele statice (.js, .css, .png etc.) sunt determinate în mod implicit sub folderul wwwroot. Acest lucru permite utilizatorilor site-ului web să vadă fișierele .js și .css direct împreună cu HTML și să le reflecte pe ecran.

Folderul de plasare implicit pentru acest fișier static este Startup.Configure wwwroot, deoarece apelează următoarea app.UseStaticFiles metodă descrisă în metodă:

public class Startup
{
  // 省略

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

    app.UseStaticFiles();

    // 省略
  }
}

Calea folderului fizic "wwwroot" este "https://<host name>/" în URL. De exemplu, fișierul din wwwroot\image\sample.png poate fi găsit în URL-ul de sub https://<nume gazdă>/imagine.png și eșantion.]

Fișierele plasate în afara folderului wwwroot nu sunt, în esență, menționate de la un URL de pe Web.

să plasați fișiere statice în plus față de folderul wwwroot și să modificați calea de referință la ADRESA URL

Configurare folder

De data aceasta, doresc să părăsesc funcția folderului wwwroot, dar și să plasez fișierul imagine într-un folder separat, astfel încât să poată fi referit pe Web.

Configurația folderului proiectului trebuie să fie după urmează, astfel încât să puteți vedea fișierele imagine în folderul Conținut al fiecărui site din Zone.

În această stare, URL-ul .png fișierul în eșantion1.png

  • https://<nume gazdă>/arenas/site1/content/image/sample1.png

Şi

  • https://<Nume gazdă>/site1/content/image/sample1.png

poate părea că ar fi, dar aici

  • https://<Nume gazdă>/site1/image/sample1.png

la care se face referire în .

Apropo, dacă plasați un fișier static în plus față de folderul wwwroot, acțiunea de compilare a fișierului poate lipsi. Dacă continuați să publicați, fișierul nu va fi plasat, deci asigurați-vă că îl setați înapoi la conținut.

Adăugarea unui program

Pentru a face disponibile fișiere statice în foldere non-wwwroot, Startup.Configure apelați metode suplimentare app.UseStaticFiles în metodă după urmează:

// 追加
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 Apelarea metodei fără argumente permite folderul wwwroot. Puteți adăuga setări suplimentare StaticFileOptions trecând la primul argument.

StaticFileOptions.FileProvider Specifică folderul fizic la PhysicalFileProvider care doriți să se refere proprietatea ca fișier static în timpul trecerii unei instanțe de . Fișierul de sub calea specificată aici este un fișier la care se poate face referire pe Web. De asemenea, poate fi RequestPath rădăcina URL-ului pentru următoarele proprietăți:

env.ContentRootPath Proprietatea conține calea rădăcină (calea fizică) a programului Web. Este o idee bună să combinați acest lucru cu calea relativă către folderul țintă.

StaticFileOptions.RequestPath Proprietatea descrie calea rădăcină a URL-ului care face referire la fișierul static. Wwwroot-ul implicit https://<ホスト名> se bazează pe . Ca și în codul de RequestPath = "/Site1" mai sus, dacă scrieți https://<ホスト名>/Site1 este rădăcina. Aceasta Areas/Site1/Content/xxxx leagă calea fizică cu ADRESA https://<ホスト名>/Site1/xxxx URL.

Folosind sample1.png ca exemplu, Areas/Site1/Content/image/sample.png fișierul poate fi https://<ホスト名>/Site1/image/sample.png referit în cale.

Verificare operațiune

index.html Plasați eticheta img astfel încât să puteți vedea imaginea după urmează: Calea face referire, de asemenea, la imaginile site1 și site2, așa sunt definite.

<!-- 省略 -->

<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" />
<!-- ここまで追加 -->

Dacă o conduci și vezi imaginea, e un succes.