Statische bestanden in andere mappen dan wwwroot plaatsen
Milieu
- Visuele studio
-
- Visuele Studio 2019
- ASP.NET Kern
-
- 3.1 (De pagina van het scheermes, MVC)
Informatie over de standaardplaatsingslocatie voor statische bestanden
Statische bestanden (.js, .css, .png, enz.) worden standaard onder de map wwwroot geplaatst. Hierdoor kunnen websitegebruikers de .js- en .css bestanden rechtstreeks samen met HTML zien en op het scherm weergeven.
De standaardplaatsingsmap voor dit statische bestand is wwwroot Startup.Configure
omdat het de volgende methode aanroept die in de methode wordt app.UseStaticFiles
beschreven:
public class Startup
{
// 省略
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 省略
app.UseStaticFiles();
// 省略
}
}
Het pad van de fysieke map "wwwroot" is "https://<host name>/" in de URL. Het bestand in wwwroot\image\sample.png is bijvoorbeeld te vinden in de URL onder https://<host name>/image.png en sample.]
Bestanden die buiten de map wwwroot worden geplaatst, worden in wezen niet verwezen vanaf een URL op internet.
Statische bestanden naast de map wwwroot plaatsen en het referentiepad op de URL wijzigen
Mapconfiguratie
Deze keer wil ik de functie van de wwwroot-map verlaten, maar ook het afbeeldingsbestand in een aparte map plaatsen, zodat er op internet naar kan worden verwezen.
De mapconfiguratie van het project moet als volgt zijn, zodat u de afbeeldingsbestanden in de map Inhoud van elke site in De gebieden kunt zien.
In deze status wordt de URL .png het bestand in voorbeeld1.png
- https://<hostnaam>/arenas/site1/content/image/sample1.png
En
- https://<Hostnaam>/site1/content/image/sample1.png
het lijkt misschien zo, maar hier
- https://<Hostnaam>/site1/image/sample1.png
waarnaar moet worden verwezen in .
Trouwens, als u een statisch bestand naast de map wwwroot plaatst, ontbreekt mogelijk de buildactie van het bestand. Als u doorgaat met publiceren, wordt het bestand niet geplaatst, dus zorg ervoor dat u het terugzet naar inhoud.
Een programma toevoegen
Als u statische bestanden beschikbaar wilt maken in niet-wwwrootmappen, Startup.Configure
roept u aanvullende methoden in de methode als volgt app.UseStaticFiles
aan:
// 追加
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
Als u de methode zonder argumenten aanroept, wordt de map wwwroot gebruikt.
U kunt extra instellingen toevoegen StaticFileOptions
door door te gaan naar het eerste argument.
StaticFileOptions.FileProvider
Hiermee geeft u de fysieke map op PhysicalFileProvider
waarnaar de eigenschap moet verwijzen als een statisch bestand terwijl u een exemplaar van doorgeeft.
Het bestand onder het pad dat hier is opgegeven, is een bestand waarnaar op internet kan worden verwezen.
Het kan ook de hoofdmap van de URL zijn RequestPath
voor de volgende eigenschappen:
env.ContentRootPath
De eigenschap bevat het hoofdpad (fysiek pad) van het webprogramma.
Het is een goed idee om dit te combineren met het relatieve pad naar de doelmap.
StaticFileOptions.RequestPath
De eigenschap beschrijft het hoofdpad van de URL die naar het statische bestand verwijst.
De standaard wwwroot https://<ホスト名>
is gebaseerd op .
Zoals in de RequestPath = "/Site1"
bovenstaande code, als u schrijft
https://<ホスト名>/Site1
is de wortel.
Dit Areas/Site1/Content/xxxx
koppelt het fysieke https://<ホスト名>/Site1/xxxx
pad aan de URL.
Met voorbeeld1.png als Areas/Site1/Content/image/sample.png
voorbeeld, kan naar het bestand in het pad worden https://<ホスト名>/Site1/image/sample.png
verwezen.
Bewerking controleren
index.html
Plaats de img-tag zo dat u de afbeelding als volgt kunt zien:
Het pad verwijst ook naar site1- en site2-afbeeldingen zoals gedefinieerd.
<!-- 省略 -->
<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" />
<!-- ここまで追加 -->
Als je het uitvoert en de afbeelding ziet, is het een succes.