Plasarea fișierelor statice în alte foldere decât wwwroot
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.