Statinius failus patalpkite ne wwwroot, o kituose aplankuose
Aplinkos
- Vizualinė studija
-
- Vizualinė studija 2019
- ASP.NET branduolys
-
- 3.1 (Skustuvo puslapis, MVC)
Apie numatytąją statinių failų paskirties vietą
Statiniai failai (.js, .css, .png ir kt.) pagal numatytuosius nustatymus yra wwwroot aplanke. Tai leidžia interneto svetainės vartotojams pamatyti .js ir .css failus tiesiogiai kartu su HTML ir atspindėti juos ekrane.
Numatytasis šio statinio failo paskirties vietų aplankas yra wwwroot, Startup.Configure
nes jis iškviečia šį app.UseStaticFiles
metodą, aprašytą metode:
public class Startup
{
// 省略
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 省略
app.UseStaticFiles();
// 省略
}
}
Fizinio aplanko "wwwroot" maršrutas URL yra "https://<host name>/". Pavyzdžiui, failą wwwroot\image\sample.png galima rasti URL dalyje https://<pagrindinio kompiuterio vardas>/image.png ir pavyzdys.]
Failai, patalpinti už wwwroot aplanko ribų, iš esmės nėra nurodyti iš URL žiniatinklyje.
Kaip įdėti statinius failus be wwwroot aplanko ir pakeisti nuorodos kelią URL
Aplanko konfigūracija
Šį kartą noriu palikti wwwroot aplanko funkciją, bet taip pat įdėti vaizdo failą į atskirą aplanką, kad jį būtų galima nurodyti žiniatinklyje.
Projekto aplanko konfigūracija turėtų būti tokia, kad galėtumėte matyti vaizdo failus kiekvienos svetainės aplanke Turinys srityse.
Šioje būsenoje URL .png failą 1 pavyzdyje.png
- https://<hostname>/arenas/site1/content/image/sample1.png
Ir
- https://<Hostname>/site1/content/image/sample1.png
gali atrodyti, kad taip būtų, bet čia
- https://<Pagrindinio kompiuterio vardas>/site1/image/sample1.png
turi būti nurodyta .
Beje, jei be wwwroot aplanko įdėsite statinį failą, gali trūkti failo kūrimo veiksmo. Jei ir toliau publikuosite, failas nebus patalpintas, todėl būtinai nustatykite jį atgal į turinį.
Programos įtraukimas
Norėdami, kad statiniai failai būtų prieinami ne wwwroot Startup.Configure
aplankuose, skambinkite app.UseStaticFiles
papildomais metodais tokiu būdu:
// 追加
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
Skambinimas metodas be argumentų leidžia wwwroot aplanką.
Papildomus parametrus galite pridėti StaticFileOptions
pereidami prie pirmojo argumento.
StaticFileOptions.FileProvider
Nurodo PhysicalFileProvider
fizinį aplanką, kurį ypatybė turėtų nurodyti kaip statinį failą perduodant egzempliorių .
Failas, kurio maršrutas nurodytas čia, yra failas, kurį galima nurodyti žiniatinklyje.
Jis taip pat gali būti RequestPath
šių ypatybių URL šaknis:
env.ContentRootPath
Ypatybėje yra žiniatinklio programos šakninis maršrutas (fizinis maršrutas).
Tai gera idėja sujungti tai su santykiniu keliu į paskirties aplanką.
StaticFileOptions.RequestPath
Ypatybė apibūdina url, nurodančio statinį failą, šakninį kelią.
Numatytasis wwwroot https://<ホスト名>
yra pagrįstas .
Kaip ir RequestPath = "/Site1"
pirmiau pateiktame kode, jei rašote
https://<ホスト名>/Site1
yra šaknis.
Tai Areas/Site1/Content/xxxx
susieja fizinį https://<ホスト名>/Site1/xxxx
kelią su URL.
Naudojant pavyzdį1.png kaip pavyzdį, Areas/Site1/Content/image/sample.png
failą galima https://<ホスト名>/Site1/image/sample.png
nurodyti kelyje.
Tikrinti operaciją
index.html
Padėkite img žymę, kad galėtumėte matyti vaizdą taip:
Maršrutas taip pat nurodo site1 ir site2 vaizdus, kaip apibrėžta.
<!-- 省略 -->
<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" />
<!-- ここまで追加 -->
Jei jį paleisite ir pamatysite vaizdą, tai bus sėkminga.