Statinius failus patalpkite ne wwwroot, o kituose aplankuose

Puslapio sukūrimo data :

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.