Staatiliste failide paigutamine muudesse kaustadesse peale wwwrooti

Lehe loomise kuupäev :

Keskkond

Visuaalstuudio
  • Visuaalstuudio 2019
ASP.NET Tuum
  • 3.1 (Raseerija leht, MVC)

Staatiliste failide vaikepaigutuse asukoht

Staatilised failid (.js, .css, .png jne) on vaikimisi määratud kausta wwwroot alla. See võimaldab veebisaidi kasutajatel näha .js ja .css faile otse koos HTML-iga ja peegeldada neid ekraanil.

Selle staatilise faili vaikepaigutuskaust on Startup.Configure wwwroot, kuna see kutsub järgmist app.UseStaticFiles meetodis kirjeldatud meetodit:

public class Startup
{
  // 省略

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
    // 省略

    app.UseStaticFiles();

    // 省略
  }
}

Füüsilise kausta "wwwroot" tee on URL-is "https://<host name>/". Näiteks faili wwwroot\image\sample.png leiate URL-ist aadressil https://<host name>/image.png amp; sample.]

Väljaspool kausta wwwroot paigutatud failidele ei viidata sisuliselt veebi URL-ist.

Staatiliste failide paigutamine lisaks kaustale wwwroot ja viitetee muutmine URL-is

Kausta konfiguratsioon

Seekord tahan jätta kausta wwwroot funktsiooni, kuid paigutada pildifaili ka eraldi kausta, et sellele saaks veebis viidata.

Projekti kausta konfiguratsioon peaks olema järgmine, et näeksite pildifaile iga ala sisukaustas.

Selles olekus .png URL faili näidises1.png

  • https://<hostname>/arenas/site1/content/image/sample1.png

Ja

  • https://<Hostname>/site1/content/image/sample1.png

see võib tunduda nii, aga siin

  • https://<Hostname>/site1/image/sample1.png

millele viidatakse .

Muide, kui asetate staatilise faili lisaks kaustale wwwroot, võib faili järgutoiming puududa. Kui jätkate avaldamist, siis faili ei paigutata, nii et seadke see kindlasti tagasi sisu juurde.

Programmi lisamine

Staatiliste failide kättesaadavaks tegemiseks mitte-wwwroot Startup.Configure kaustades helistage app.UseStaticFiles meetodi täiendavatele meetoditele järgmiselt:

// 追加
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 Meetodi kutsumine ilma argumentideta lubab kausta wwwroot. Täiendavaid sätteid saate StaticFileOptions lisada, edastades esimese argumendi.

StaticFileOptions.FileProvider Määrab PhysicalFileProvider füüsilise kausta, millele atribuut peaks rakenduse eksemplari läbimisel viitama staatilise failina. Siin määratud tee all olev fail on fail, millele saab veebis viidata. See võib olla ka RequestPath järgmiste atribuutide URL-i juur:

env.ContentRootPath Atribuut sisaldab veebiprogrammi juurteed (füüsilist teed). On hea mõte kombineerida see sihtkausta suhtelise teega.

StaticFileOptions.RequestPath Atribuut kirjeldab staatilile failile viitava URL-i juurteed. Vaike-wwwroot https://<ホスト名> põhineb . Nagu RequestPath = "/Site1" ülaltoodud koodis, kui kirjutate https://<ホスト名>/Site1 on juur. See Areas/Site1/Content/xxxx lingib füüsilise https://<ホスト名>/Site1/xxxx tee URL-iga.

Näitena näidis1.png abil saab Areas/Site1/Content/image/sample.png https://<ホスト名>/Site1/image/sample.png failile viidata teel.

Kontrolli toimingut

index.html Asetage img-silt nii, et näete pilti järgmiselt: Tee viitab ka site1 ja site2 piltidele, nagu määratletud.

<!-- 省略 -->

<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" />
<!-- ここまで追加 -->

Kui sa seda käivitad ja näed pilti, on see edukas.