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.