Statisko failu novietošana mapēs, kas nav wwwroot
Vides
- Vizuālā studija
-
- Visual Studio 2019
- ASP.NET kodols
-
- 3.1 (Skuvekļa lapa, MVC)
Par statisko failu noklusējuma novietojuma atrašanās vietu
Tiek noteikts, .js .css, .png u. c.) pēc noklusējuma atrodas zem mapes wwwroot. Tas ļauj vietnes lietotājiem redzēt failus .js un .css failus tieši kopā ar HTML un atspoguļot tos ekrānā.
Šī statiskā faila noklusējuma novietojuma mape ir wwwroot, Startup.Configure
jo tā izsauc šādu app.UseStaticFiles
metodi, kas aprakstīta metodē:
public class Startup
{
// 省略
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 省略
app.UseStaticFiles();
// 省略
}
}
Fiziskās mapes "wwwroot" ceļš vietrādī URL ir "https://<host name>/". Piemēram, failu wwwroot\image\sample.png var atrast vietrādī URL zem https://<host name>/image.png and; sample.]
Uz failiem, kas novietoti ārpus mapes wwwroot, būtībā nav atsauces no vietrāža URL tīmeklī.
Kā novietot statiskos failus papildus wwwroot mapei un mainīt atsauces ceļu vietrādī URL
Mapes konfigurācija
Šoreiz es vēlos atstāt mapes wwwroot funkciju, bet arī ievietot attēla failu atsevišķā mapē, lai uz to varētu atsaukties tīmeklī.
Projekta mapju konfigurācijai jābūt šādai, lai katras vietnes mapē Apgabali varētu redzēt attēlu failus.
Šādā stāvoklī vietrādis URL .png failu paraugā1.png
- https://<hostname>/arenas/site1/content/image/sample1.png
Un
- https://<Resursdatora nosaukums>/vietne1/saturs/attēls/paraugs1.png
var šķist, ka tā būtu, bet šeit
- https://<Resursdatora nosaukums>/vietne1/attēls/paraugs1.png
, uz kuru ir jāatsauču .
Starp citu, ja novietosiet statisku failu papildus mapei wwwroot, iespējams, trūkst faila izveides darbības. Ja turpināsit publicēt, fails netiks ievietots, tāpēc noteikti iestatiet to atpakaļ uz saturu.
Programmas pievienošana
Lai statiskos failus padarītu Startup.Configure
pieejamus mapēs, kas nav wwwroot, app.UseStaticFiles
izsauciet papildu metodes šādās metodēs:
// 追加
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
Metodes izsaukšana bez argumentiem iespējo mapi wwwroot.
Papildu iestatījumus var StaticFileOptions
pievienot, pārejot pie pirmā argumenta.
StaticFileOptions.FileProvider
Norāda fizisko PhysicalFileProvider
mapi, uz kuru rekvizītam ir jāatsaucas kā uz statisku failu, nododot sistēmas instanci.
Fails zem šeit norādītā ceļa ir fails, uz kuru var atsaukties tīmeklī.
Tā var būt RequestPath
arī šādu rekvizītu URL sakne:
env.ContentRootPath
Rekvizītā ir Web programmas saknes ceļš (fiziskais ceļš).
Ieteicams to apvienot ar relatīvo ceļu uz mērķa mapi.
StaticFileOptions.RequestPath
Rekvizīts apraksta vietrāža URL saknes ceļu, kas atsaucas uz statisko failu.
Noklusējuma wwwroot https://<ホスト名>
pamatā ir .
Tāpat kā RequestPath = "/Site1"
iepriekš minētajā kodā, ja rakstāt
https://<ホスト名>/Site1
ir sakne.
Tas Areas/Site1/Content/xxxx
saista fizisko ceļu ar https://<ホスト名>/Site1/xxxx
URL.
Piemēram.png piemēram, Areas/Site1/Content/image/sample.png
izmantojot paraugu1, ceļā https://<ホスト名>/Site1/image/sample.png
var atsaukties uz failu.
Pārbaudīt operāciju
index.html
Novietojiet img tagu, lai varētu redzēt attēlu šādi:
Ceļš arī atsaucas uz site1 un site2 attēliem, kā definēts.
<!-- 省略 -->
<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" />
<!-- ここまで追加 -->
Ja jūs to vadāt un redzat attēlu, tas ir veiksmīgs.