Staattisten tiedostojen sijoitaminen muihin kansioihin kuin wwwroot
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.